zoukankan      html  css  js  c++  java
  • [中间件]Fastjson [转载]

    1 Fastjson的安全漏洞

    本段摘自: fastjson到底做错了什么?为什么会被频繁爆出漏洞?
    前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。

    但是作为一个开发者,我更关注的是他为什么会频繁被爆漏洞?于是我带着疑惑,去看了下fastjson的releaseNote以及部分源代码。

    最终发现,这其实和fastjson中的一个AutoType特性有关。

    从2019年7月份发布的v1.2.59一直到2020年6月份发布的 v1.2.71 ,每个版本的升级中都有关于AutoType的升级。

    下面是fastjson的官方releaseNotes 中,几次关于AutoType的重要升级:

    1.2.59发布,增强AutoType打开时的安全性 fastjson
    1.2.60发布,增加了AutoType黑名单,修复拒绝服务安全问题 fastjson
    1.2.61发布,增加AutoType安全黑名单 fastjson
    1.2.62发布,增加AutoType黑名单、增强日期反序列化和JSONPath fastjson
    1.2.66发布,Bug修复安全加固,并且做安全加固,补充了AutoType黑名单 fastjson
    1.2.67发布,Bug修复安全加固,补充了AutoType黑名单 fastjson
    1.2.68发布,支持GEOJSON,补充了AutoType黑名单。(引入一个safeMode的配置,配置safeMode后,无论白名单和黑名单,都不支持autoType。) fastjson
    1.2.69发布,修复新发现高危AutoType开关绕过安全漏洞,补充了AutoType黑名单 fastjson
    1.2.70发布,提升兼容性,补充了AutoType黑名单
    

    甚至在fastjson的开源库中,有一个Isuue是建议作者提供不带autoType的版本:

    那么,什么是AutoType?为什么fastjson要引入AutoType?为什么AutoType会导致安全漏洞呢?现在,就来深入分析一下。

    2 AutoType 何方神圣?

    (Fastjson的频繁升级/安全漏洞之源)

    详见: fastjson到底做错了什么?为什么会被频繁爆出漏洞?

    3 简介

    Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
    
    Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
    
    Fastjson 源码地址:https://github.com/alibaba/fastjson
    
    Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN
    

    4 特性

    • 提供服务器端、安卓客户端两种解析工具,性能表现较好。
    • 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。
    • 允许转换预先存在的无法修改的对象(只有class、无源代码)。
    • Java泛型的广泛支持。
    • 允许对象的自定义表示、允许自定义序列化类。
    • 支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

    5 下载和使用

    Maven: pom.xml

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>x.x.x</version>
    </dependency>
    

    X 参考文献

  • 相关阅读:
    js正则表达式,判断字符串是否以数字组结尾,并取出结尾的数字
    js中的正则表达式入门
    jQuery获取元素对象本身的html
    正则表达式,求判断字符串是否以数字组结尾,并取出结尾的数字 正则表达式
    行为树的设计与实现
    BMFONT 字体制作
    VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
    XCODE修改IOS应用的名称
    Xcode 生成 ipa包
    Xcode 打包 ipa 包
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/12921718.html
Copyright © 2011-2022 走看看