背景
fastjson出现了严重的漏洞,攻击者可以瘫痪整个业务
脆弱性的说明
常见的JSON组件FastJson在远程代码执行方面存在漏洞,攻击者可以通过使用精心构建的JSON消息向目标服务器发出任意命令来获得服务器权限。 这次爆发的脆弱性是以往脆弱性中绕过autoType的。
影响范围
FastJson 1.2.48
最近,关于fastjson的新闻引起了很多人的关注! 许多开发者突然意识到,fastjson已经深入到我们开发工作的各个方面。 那么,除了尽快升级你的json之外,我们来挖掘一下fastjson最常用的用法吧。
fastjson的一般方式
1 .依赖于1.maven (我记得升级到1.2.48版以上哦) ) ) ) )。
! --https://mvn资料档案库.com/artifact/com.Alibaba/fast JSON-- -
从属关系
groupIdcom.alibaba/groupId
artifactIdfastjson/artifactId标识
版本1.2.62 /版本
/dependency2.FastJson在解析json格式的字符串时主要使用了以下三个类。
(1) JSON :用于将JSON格式的字符串与JSON对象以及javaBean进行转换的fastjson的解析器。
)2) JSON对象: Fast JSON提供的JSON对象。
3 ) jsonArray:fastJson提供了JSON数组对象。
3 .常用方式
3.1字符串和java对象
实例1 :从对象到json字符串
映射,字符串映射=新海量映射字符串,字符串(;
映射('代码','0' );
地图.推送(消息)、)确定);
string JSON=JSON.tojsonstring (地图;
系统输出打印机(JSON; 输出结果如下。
“代码”:“0”,“消息”:“确定”实例2 :字符串转换对象
映射,字符串映射=新海量映射字符串,字符串(;
映射('代码','0' );
地图.推送(消息)、)确定);
string JSON=JSON.tojsonstring (地图;
系统输出打印机(JSON;
mapobj=(地图) JSON.parse ) JSON;
system.out.println (代码=' obj.get )、消息=' obj.get )、消息); 输出结果
代码: 0,消息:确定
代码=0,消息=ok 3.2工具类JSon对象
publicstaticvoidmain (字符串[ ]数组) {
映射,字符串映射=新海量映射字符串,字符串(;
映射('代码','0' );
地图.推送(消息)、)确定);
string JSON=JSON.tojsonstring (地图;
系统输出打印机(JSON;
mapobj=(地图) JSON.parse ) JSON;
system.out.println (代码=' obj.get )、消息=' obj.get )、消息);
字符串代码=JSON .透视对象(JSON ).Getstring ('代码);
字符串消息=JSON .透视对象(JSON ).getstring ('消息);
system.out.println ('代码='代码',消息='消息);
}输出结果
代码: 0,消息:确定
代码=0,消息=确定
代码=0,消息=确定3.3数组对象
列表用户=新阵列用户(JSON阵列.透视阵列) JSON字符串,用户类);