V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fanxasy
V2EX  ›  Java

fastjson 真就突出一个阴魂不散

  •  1
     
  •   fanxasy · 2022-05-25 09:52:12 +08:00 · 12610 次点击
    这是一个创建于 673 天前的主题,其中的信息可能已经有所发展或是发生改变。
    接集团预警通报 2022 年第 13 号:监测发现,Java 开发组件 fastjson 存在反序列化漏洞。fastjson 被众多 java 软件作为组件集成,广泛存在于 java 应用的服务端代码中。攻击者可利用上述漏洞实施任意文件写入、服务端请求伪造等攻击行为,造成服务器权限被窃取、敏感信息泄漏等严重影响。此次事件影响 fastjson 1.2.80 及之前所有版本。目前,已发布 fastjson 最新版本 1.2.83 以修复该漏洞,组件升级地址为: https://github.com/alibaba/fastjson/releases/tag/1.2.83 。请各系统建设部门及时排查梳理受影响情况,在确保安全的前提下修复漏洞、消除隐患,提高网络系统安全防护能力,严防网络攻击事件。同时,加强安全监测,做好应急处置准备,发现突出情况要迅速处置并第一时间报告数据中心。
    97 条回复    2022-05-31 18:23:37 +08:00
    undef404
        1
    undef404  
       2022-05-25 09:56:02 +08:00
    没用过 fastjson ,但是经常看到爆出漏洞的新闻。
    dcsuibian
        2
    dcsuibian  
       2022-05-25 09:57:33 +08:00   ❤️ 1
    Spring Boot 默认 logback 和 Jackson ,真是 nice 。
    rekulas
        3
    rekulas  
       2022-05-25 09:57:37 +08:00   ❤️ 1
    阿里巴巴:fastjson 现在负面有点多,这样吧咱们出个 fastjson2 重来 😜
    rekulas
        4
    rekulas  
       2022-05-25 09:58:21 +08:00   ❤️ 1
    huihuiHK
        5
    huihuiHK  
       2022-05-25 10:11:17 +08:00
    @rekulas 没想到还真有
    putaozhenhaochi
        6
    putaozhenhaochi  
       2022-05-25 10:36:55 +08:00 via Android
    序列化库都这样
    fanxasy
        7
    fanxasy  
    OP
       2022-05-25 10:45:15 +08:00
    我之前也想把项目从 fastjson 迁移到 spring 自带的 jackson 去,然而当我点开一个转换工具类,5 位数行代码里一片 jsonobject 、jsonarray ,我放弃了...
    Reficul
        8
    Reficul  
       2022-05-25 10:46:42 +08:00
    > 又不是不能用.jpg
    tusj
        9
    tusj  
       2022-05-25 10:47:59 +08:00
    bugest json
    NoKey
        10
    NoKey  
       2022-05-25 10:50:43 +08:00
    问个问题,为啥不用 gson 呢?
    fwee
        11
    fwee  
       2022-05-25 10:51:29 +08:00
    我就问你快不快吧,毕竟不叫 safejson
    sheeta
        12
    sheeta  
       2022-05-25 10:53:03 +08:00   ❤️ 4
    其实我一直想不明白,JSON 这么重要的场景,Java 都没有一个官方的序列化的库吗,反而各种库横行( Jackson, FastJson, Gson 等等)。其他语言如 PHP, Go, Python 都是官方支持 JSON 解析的吧
    calano
        13
    calano  
       2022-05-25 11:20:24 +08:00
    所以现在 fastjson2 能用了吗,依赖太多实在换不动
    xgfan
        14
    xgfan  
       2022-05-25 11:30:46 +08:00   ❤️ 10
    开个地图炮,用着 spring 全家桶,还在用 fastjson 的,都是 sb 。
    LeegoYih
        15
    LeegoYih  
       2022-05-25 12:02:37 +08:00   ❤️ 3
    个人几乎不用阿里开源框架 /工具
    Goooooos
        16
    Goooooos  
       2022-05-25 12:24:47 +08:00
    @NoKey #10 Gson 性能一般,还是 Jackson 好
    chenshun00
        17
    chenshun00  
       2022-05-25 12:25:36 +08:00
    @xgfan 不好意思,傻逼就是在下
    chendy
        18
    chendy  
       2022-05-25 12:27:50 +08:00   ❤️ 3
    其实 jackson 之类的一样有漏洞,一样要升级( spring 全家桶的话跟着一起升级就行)
    只是 fastjson 作为阿里开源,相关消息关注度更高
    MakHoCheung
        19
    MakHoCheung  
       2022-05-25 12:31:33 +08:00
    @sheeta 有官方(现在应该不算了)规范,JSON-P 和 JSON-B ,但是实现都在 Jakarta EE 容器里面。
    waising
        20
    waising  
       2022-05-25 12:34:53 +08:00
    @calano #13 fastjson2 有个 2.0 版 还有个 2.0 兼容版
    cp19890714
        21
    cp19890714  
       2022-05-25 12:50:26 +08:00
    我不能理解 “用 spring ,又特意改为 fastjson” 这种操作。
    AA5DE3F034ACCB9E
        22
    AA5DE3F034ACCB9E  
       2022-05-25 12:53:45 +08:00
    @cp19890714 先入为主吧,像初学者搜索问下 Java 怎么处理 Json ,推荐的基本是 fastjson ,用习惯了 api 又怎么能轻易换
    moen
        23
    moen  
       2022-05-25 13:13:06 +08:00
    阿里继续向外输出人才后估计又有更多公司要改成 Java ,按他们的习惯用上各种阿里的库(
    nothingistrue
        24
    nothingistrue  
       2022-05-25 13:41:38 +08:00
    @sheeta #12 Java 有官方的序列化,因为安全漏洞实在难以修复,已经确定要被抛弃,只是因为替代品还没弄好一直没有正式抛弃。至于 JSON ,它属于类似 XML 那样的跨平台数据格式,原本不是为序列化 /反序列化服务的,即无法成为 Java 内部标准,也无法让 Java 为其提供 JDK 级别的实现,这点跟 XML 一样的待遇,很正常。
    Oktfolio
        25
    Oktfolio  
       2022-05-25 13:41:57 +08:00
    @cp19890714 基本没人改 Spring MVC 的默认 JSON 序列化库吧......
    est
        26
    est  
       2022-05-25 13:50:49 +08:00
    我觉得 java 不支持 json 主要是因为强类型吧。
    zoumouse
        27
    zoumouse  
       2022-05-25 13:53:03 +08:00
    一般的序列化库都有问题,包括 Jackson ,可以看下这个 https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet
    不过貌似 Gson 没出过大问题
    nine
        28
    nine  
       2022-05-25 13:53:04 +08:00
    Java 这么繁荣是有道理的,连个 JSON 解析库都做不好,大把的输出时间换工资啊。
    AlkTTT
        29
    AlkTTT  
       2022-05-25 13:54:42 +08:00   ❤️ 3
    @cp19890714 组内大部分同事对阿里开源有蜜汁崇拜,fastjson ,easyexcel ,nacos 都在用,劝都劝不动
    Joker123456789
        30
    Joker123456789  
       2022-05-25 13:55:31 +08:00
    @nine 原来在你的逻辑里, 越麻烦 就越流行啊? 真是万年一遇的天才。
    NoKey
        31
    NoKey  
       2022-05-25 13:57:51 +08:00
    @Goooooos 谢谢回复,我搜了一下,也没找到 gson 性能差多少的资料,能找到的性能比较看起来那点性能差异对服务影响不大,除非是那种大量解大 json 任务的
    Joker123456789
        32
    Joker123456789  
       2022-05-25 13:57:52 +08:00
    @cp19890714 没多少人特意改为吧? 接收参数,响应参数等 框架自带的功能 又没人动。 只是需要手工处理 json 的时候 采用 fastjson ,因为用起来方便,不需要自己写工具类。jackson 确实麻烦了一点点。 只是一点点。
    96XL
        33
    96XL  
       2022-05-25 14:29:35 +08:00
    hutool 的 json 咋样
    cweijan
        34
    cweijan  
       2022-05-25 15:42:33 +08:00
    @rekulas 我还以为你是抖机灵, 没想到还真有!
    nine
        35
    nine  
       2022-05-25 15:45:34 +08:00
    @Joker123456789
    存在即合理,我是发现者,不是定义者。
    xgfan
        36
    xgfan  
       2022-05-25 16:12:36 +08:00   ❤️ 1
    @Joker123456789 你这个就是 fastjson 使用者的典型例子。

    很多 fastjson 的使用者不知道,jackson 的 objectMapper 早就注入到 spring context 里了。
    直接用就好了,压根不存在“需要手工处理 json 的时候 采用 fastjson ,因为用起来方便,不需要自己写工具类”。
    fiveStarLaoliang
        37
    fiveStarLaoliang  
       2022-05-25 16:32:17 +08:00
    看来学艺不精的不在少数,spring 全家桶稍微研究一下就知道 objectMapper 是现成的,直接拿来用就行了
    frisktale
        38
    frisktale  
       2022-05-25 16:55:18 +08:00
    Buges
        39
    Buges  
       2022-05-25 17:01:40 +08:00 via Android
    @sheeta 缺乏统一的标准,Java 也有注解,抄一下 serde 作业也是好的。
    DrJoseph
        40
    DrJoseph  
       2022-05-25 17:27:06 +08:00   ❤️ 14
    记者:你有什么特长
    大爷:我心算很快
    记者:1+1 等于多少
    大爷:5
    记者:不对
    大爷:但我算的快
    NewTab12138
        41
    NewTab12138  
       2022-05-25 17:30:26 +08:00
    建议离阿里的开源项目远一点
    ragnaroks
        42
    ragnaroks  
       2022-05-25 17:30:31 +08:00
    @frisktale dotnet 新的内置(特指 system.text.json )其实就是收编了牛汤杰森
    elintwenty
        43
    elintwenty  
       2022-05-25 17:30:38 +08:00
    @Joker123456789 gson 并不比 fastjson 难用,上手极快
    dqzcwxb
        44
    dqzcwxb  
       2022-05-25 17:30:45 +08:00   ❤️ 3
    Fastjson 出 bug 就是国产垃圾
    Jackson 出 bug 就是难免出问题能理解
    dbpe
        45
    dbpe  
       2022-05-25 17:32:12 +08:00
    @MakHoCheung jakarta 这玩意...我记得 base in jdk11 吧?
    hidemyself
        46
    hidemyself  
       2022-05-25 17:50:23 +08:00
    v 站输出阿里也是政治正确吗。。

    Dubbo,Druid,Nacos,Sentinel,arthas 等等好像都是阿里的
    debuggeeker
        47
    debuggeeker  
       2022-05-25 17:57:33 +08:00
    当一个漏洞公开声明的时候,已经没有利用价值了
    opengps
        48
    opengps  
       2022-05-25 18:04:42 +08:00
    反过来想,其实那些“没有问题的库”,出问题风险更大
    pcmgr456
        49
    pcmgr456  
       2022-05-25 18:23:29 +08:00 via Android
    @cp19890714 毕竟国内很多人觉得阿里开源的东西高级
    jim9606
        50
    jim9606  
       2022-05-25 19:10:29 +08:00
    又是 AutoType 的问题。
    罪过就是功能太强大,功能一复杂就容易出漏洞。
    跟 Log4j 那个漏洞也是有一些相似,有多少人知道为啥一个日志库有动态 class 执行的功能呢。
    ivechan
        51
    ivechan  
       2022-05-25 19:13:32 +08:00
    国外很多开源软件其实也有漏洞。。。大可平常心看待。
    ufan0
        52
    ufan0  
       2022-05-25 19:20:45 +08:00
    早期确实坑爹,现在就平常心看待吧,出问题不可怕,怕的是解决不了以及解决效率。
    就这点看来,fastjson 还是优秀的。

    另外慎用 fastjson2 ,同事近期还给 fastjson2 提了兼容性 issue 已被确认。
    Oktfolio
        53
    Oktfolio  
       2022-05-25 19:25:15 +08:00
    @xgfan
    @fiveStarLaoliang

    随便找个初中级都知道默认 ObjectMapper 注册到了 Spring Context 中,不要想当然。
    EarthChild
        54
    EarthChild  
       2022-05-25 19:34:09 +08:00
    @DrJoseph #40 哈哈哈这句话是针对 #11 说的吗?哈哈哈
    @fwee #11
    EvanLuo42
        55
    EvanLuo42  
       2022-05-25 19:36:50 +08:00 via iPhone
    @sheeta 内置的反序列化库也有洞的吧,前几天刚做到题
    zhleonix
        56
    zhleonix  
       2022-05-25 19:49:31 +08:00
    @AA5DE3F034ACCB9E 的确,Fastjson 的 API 比较简单,jackson 麻烦。
    ychost
        57
    ychost  
       2022-05-25 19:56:36 +08:00
    基本的序列化 /反序列化都有类似漏洞,关 authType 保平安,那玩意儿除了 RPC 之外,其它应用场景真的很少
    sprite82
        58
    sprite82  
       2022-05-25 21:27:40 +08:00
    @xgfan #36 人家不是说了,要手写工具类,Jackson api 实在不好用,这也是 fastjson 流行的原因之一。而不是注入不注入的问题,哪怕不是注入的,写个单例也比定义个变量再用注解方便
    mikulch
        59
    mikulch  
       2022-05-25 21:35:24 +08:00
    @Oktfolio 还真不知道。。。每次用的时候不用自己 new 出来?
    xgfan
        60
    xgfan  
       2022-05-25 21:41:33 +08:00
    @sprite82 最常用的 encode/decode ,两者基本没区别
    ```
    objectMapper.writeValueAsString(car);
    JSON.toJSONString(car);
    objectMapper.readValue(json, Car.class);
    JSON.parseObject(jsonString, Car.class);
    ```
    xgfan
        61
    xgfan  
       2022-05-25 21:44:01 +08:00
    至于使用静态 JSON.xxxx 方法好,还是注入好,这个涉及到个人偏好问题了。
    XhstormR02
        62
    XhstormR02  
       2022-05-25 22:09:07 +08:00 via Android
    @xgfan 静态就不用 new 了,像 jackson 还要得自己 new ,小白说这可太复杂了,狗头保命。我站 boot ,boot 用啥我用啥
    HiShan
        63
    HiShan  
       2022-05-25 22:09:56 +08:00   ❤️ 2
    请问在座的各位能写一个又快又安全的 JSON 库出来吗?又要用又要说别人垃圾漏洞多。还能扯到 Java 垃圾连个自带的 json 库都没有。。不能做一个有礼貌的伸手党吗?
    sprite82
        64
    sprite82  
       2022-05-25 22:11:30 +08:00
    @xgfan writeValueAsString 和 toJSONString ,我觉得后者更直白些,我感觉不爽的是 Jackson 会抛异常,我要专门处理它,所以我一般会写个工具类,用 fastjson 的 api 名字来包一下 Jackson 。静态和注入,我觉得综合考虑还是静态更好,注入的话没法直接在静态方法中使用
    Bromine0x23
        65
    Bromine0x23  
       2022-05-25 22:41:01 +08:00
    只能说对应大部分开发者来说易用性确实大于可扩展性。
    性能上的话,当下 fastjson1 对比 jackson 已经没优势了: https://github.com/fabienrenaud/java-json-benchmark
    locochen
        66
    locochen  
       2022-05-25 23:00:20 +08:00
    这个标题, 有的那啥了.
    开源是好事, 选择使用, 就要有风险预期. 不然资深开发拿那么高工资, 是玩了.
    Naccl
        67
    Naccl  
       2022-05-25 23:10:23 +08:00
    代码洁癖不能忍受自己的 spring 项目额外依赖个 fastjson
    Dregs2
        68
    Dregs2  
       2022-05-25 23:59:51 +08:00 via Android
    vert.x 里对 jackson 的封装蛮好用的
    aragakiyuii
        69
    aragakiyuii  
       2022-05-26 00:00:25 +08:00 via iPhone
    @AlkTTT 求问一下 easyexcel 有啥替代品吗😂
    leeg810312
        70
    leeg810312  
       2022-05-26 00:10:09 +08:00 via Android
    .net 和 Java 都写,还是.net 好,json 序列化只有 2 个库,一个官方一个 Newtonsoft ,用到现在也没有听到哪个有重大漏洞。
    seepiner
        71
    seepiner  
       2022-05-26 00:35:29 +08:00
    可以用这个封装 jackjson 的库
    <dependency>
    <groupId>com.seepine</groupId>
    <artifactId>json</artifactId>
    <version>0.0.2</version>
    </dependency>

    主要封装了个 J sonObject 以及提供成静态方法
    JsonObject jsonObject = Json.parseObj("jsonStr");
    ArrayNode arrayNode = Json.parseArray("jsonStr");
    Bean bean = Json.parse("jsonStr", Bean.class);
    String jsonStr = Json.toJson(bean);
    micean
        72
    micean  
       2022-05-26 00:47:18 +08:00 via Android
    jackson 还是结合 kotlin 最好用
    xuanbg
        73
    xuanbg  
       2022-05-26 05:02:11 +08:00
    说什么 jackjson 的 api 难用的,就不能自己简单封装几个静态方法么?再说,你们都用不到深拷贝和类型转换的么?
    willygeek007
        74
    willygeek007  
       2022-05-26 09:06:20 +08:00
    Bugjson
    bthulu
        75
    bthulu  
       2022-05-26 09:20:38 +08:00   ❤️ 2
    @xuanbg jackson 漏洞也没少啊。fastjson 国内用的多,尤其阿里用的多,国内好多黑灰产都在研究 fastjson 的漏洞,导致看起来 fastjson 的漏洞比 jackson 多不少。就跟 windows 上木马病毒比 linux 多一个道理,并不是 windows 不行,用的人多了,自然就有人来研究各种奇奇怪怪偏门的漏洞了,这反而证明了这个项目非常成功。
    AlkTTT
        76
    AlkTTT  
       2022-05-26 09:21:00 +08:00
    @aragakiyuii 复杂的用原生 poi ,简单的用 hutool
    wupher
        77
    wupher  
       2022-05-26 09:26:46 +08:00
    写开源软件还真就不是轻松的活
    ZeroDu
        78
    ZeroDu  
       2022-05-26 10:21:49 +08:00
    有一说一:fastjson api 确实易用。不用各种处理异常; 还有 nacos 确实比其他注册中心 /配置中心好用多。一套搞定不折腾
    zhongjun96
        79
    zhongjun96  
       2022-05-26 10:42:51 +08:00
    @xuanbg 特地试了一下,怎么解析下划线和驼峰两种形式的 json ?
    比如有些接口返回的 {"user_name":"aa"},有些接口{"userName":"aa"}。bean 字段 userName 。
    自己封装静态方法只能指定一种映射方式,支持了下划线驼峰就会不支持。
    bthulu
        80
    bthulu  
       2022-05-26 11:14:26 +08:00
    @zhongjun96 类里额外加一个 void setUser_name(xxx)的方法
    mmdsun
        81
    mmdsun  
       2022-05-26 11:55:00 +08:00 via iPhone
    阿里出品,必属()
    zhongjun96
        82
    zhongjun96  
       2022-05-26 18:38:50 +08:00
    @bthulu 现在都直接 @Data 了。而且正常一个接口几十个字段,一个一个加 set 方法也很蠢啊。fastjson 就可以同时兼容下划线和驼峰
    blankmiss
        83
    blankmiss  
       2022-05-26 20:06:56 +08:00
    @nine
    存在即合理的真实意思
    合理的东西是实在的东西,然后才是实在的东西是合理的
    xuanbg
        84
    xuanbg  
       2022-05-27 02:21:58 +08:00
    @zhongjun96 可以在 userName 字段上用 @JsonProperty("user_name")注解来指定输入的 user_name 字段对应到 bean 字段 userName
    xuanbg
        85
    xuanbg  
       2022-05-27 02:31:15 +08:00
    @zhongjun96 哦哦,同时支持只能加个 set 方法。。。但这似乎是代码规范化的问题吧?接口不应该有统一的数据规范么,连 key 的名称都不一样是什么鬼?是不是你还要兼容有人用 UserName ?
    zhongjun96
        86
    zhongjun96  
       2022-05-27 09:00:39 +08:00
    @xuanbg #84 我只是举个例子。最基本的,对接多家第三方 api 的话,下划线和驼峰肯定都是有的。抽取成静态 api 的话就只能支持一种。不然就要手动加注解。实际用起来是不如 fastjson 的
    golangLover
        87
    golangLover  
       2022-05-29 16:42:13 +08:00 via Android
    @dqzcwxb fj 的同一个问题出现几十次了。。。
    liian2019
        88
    liian2019  
       2022-05-31 14:10:39 +08:00
    无脑喷的人多少没脑子的
    Joker123456789
        89
    Joker123456789  
       2022-05-31 17:47:37 +08:00
    @xgfan 没有任何注解的实体类 也属于 context 吗? map 也属于吗?
    Joker123456789
        90
    Joker123456789  
       2022-05-31 17:51:41 +08:00
    @xgfan jaskson 需要在类上 添加 @JsonIgnoreProperties(ignoreUnknown = true) 才比较保险,属不属于麻烦一点点 的范畴?

    还有,不用 spring 的时候,你拿出来显摆的那些知识点,还起作用吗?
    xgfan
        91
    xgfan  
       2022-05-31 18:01:28 +08:00
    @Joker123456789 序列化 /反序列化的配置是可以配置在 objectMapper 上。
    我只会 Spring ,别的都不会,会让你开心一点吗?
    你接着(spring/jackson)+fastjson 混用吧。
    Joker123456789
        92
    Joker123456789  
       2022-05-31 18:03:41 +08:00
    @xgfan 哦,原来还要配置一下啊,这又算不算 麻烦一点点的范畴呢? 一点点。

    我们争论的 焦点 在于 “一点点”。 没想到 一句 “不用 spring 的时候” 就能刺痛你, 你也是够敏感的。

    最后模仿你一下,你接着 光用 spring 吧。
    xgfan
        93
    xgfan  
       2022-05-31 18:07:10 +08:00
    @Joker123456789 帮你捋一捋整个来龙去脉吧。
    #21 ,cp19890714 发言:`我不能理解 “用 spring ,又特意改为 fastjson” 这种操作。`
    #32 ,你表示“没多少人特意改为吧? 接收参数,响应参数等 框架自带的功能 又没人动。 只是需要手工处理 json 的时候 采用 fastjson ,因为用起来方便,不需要自己写工具类。jackson 确实麻烦了一点点。 只是一点点。”

    后续所有讨论,不都是用了 Spring 的基础上吗,你搁这儿跟我扯什么“不用 spring”呢?
    Joker123456789
        94
    Joker123456789  
       2022-05-31 18:10:35 +08:00
    @xgfan 你还帮我 捋一捋???

    我:jackson 确实麻烦了一点点,只是一点点。
    你:根本就没

    接下来就好玩了,你接着说出了两个 “确实麻烦一点点的地方” 来证明 “他没有麻烦一点点”。

    1. jackson 的 objectMapper 早就注入到 spring context 里了。 我就问你,没有任何注解的实体类,map ,list 等 属于 context 吗??
    2. 序列化 /反序列化的配置是可以配置在 objectMapper 上。 需要配置一下 属于 麻烦一点点的范畴吗???

    你连 基本的逻辑都没捋清楚,还帮我捋一捋????
    xgfan
        95
    xgfan  
       2022-05-31 18:12:52 +08:00
    @Joker123456789 在已经用了 Jackson 的前提下,再引入一个 fastjson 麻烦 ,还是继续使用统一的 jackson 麻烦。
    这个问题都要争论,我无话可说。
    Joker123456789
        96
    Joker123456789  
       2022-05-31 18:17:27 +08:00
    @xgfan jackson 是 spring 依赖的,我本来就需要引入 spring ,所以 jackson 的引入对我没有增加任何工作量。

    我增加的工作量仅仅是 引入了一次 fastjson ,而且 一次性引入即可, 后面 我所提到的那些麻烦的点 就全都不存在了。

    你信仰 jackson ,就好好信仰吧,当你喜欢一件东西的时候,他在你眼里就是完美的。

    而我, 我自己写的框架里就是 jackson ,你不信的话可以去扒源码, 我是实实在在用过的人, 也是实实在在接纳了 jackson 的人, 不像你,带着偏见,在这批评一个你根本没接纳的东西。
    xgfan
        97
    xgfan  
       2022-05-31 18:23:37 +08:00
    @Joker123456789 确实没啥工作量,只需要出问题之后修双份漏洞而已。
    别扣帽子,什么“显摆”、“信仰”、“偏见”。
    我有说 fastjson 不好吗?我只是在批评“在一个项目内引入两个 json 工具”这种行为而已。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1939 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 16:24 · PVG 00:24 · LAX 09:24 · JFK 12:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.