fastjson反序列化漏洞原理(fastjson enum 枚举 反序列化)
本文目录
- fastjson enum 枚举 反序列化
- fastjson在反序列化时,怎么解析对象中的继承
- java fastjson 序列化、反序列化
- fastjson反序列化时如果实例有多个引用时有Bug
- Java反序列化安全漏洞怎么回事
- 反序列化漏洞是因为java的原因吗
fastjson enum 枚举 反序列化
看fastjson源码,SerializeWriter
public void writeEnum(Enum《?》 value, char c) { if (value == null) { writeNull(); write(’,’); return; } if (isEnabled(SerializerFeature.WriteEnumUsingToString)) { if (isEnabled(SerializerFeature.UseSingleQuotes)) { write(’\’’); write(value.name()); write(’\’’); write(c); } else { write(’\“’); write(value.name()); write(’\“’); write(c); } return; } writeIntAndChar(value.ordinal(), c); }可以看出SerializeWriter在初始化的时候,features不要设置SerializerFeature.WriteEnumUsingToString
因为JSON.DEFAULT_PARSER_FEATURE是enable了SerializerFeature.WriteEnumUsingToString,也就是说是读枚举的value值而不是int值
public static int DEFAULT_GENERATE_FEATURE; static { int features = 0; features |= com.alibaba.fastjson.serializer.SerializerFeature.QuoteFieldNames.getMask(); features |= com.alibaba.fastjson.serializer.SerializerFeature.SkipTransientField.getMask(); features |= com.alibaba.fastjson.serializer.SerializerFeature.WriteEnumUsingToString.getMask(); features |= com.alibaba.fastjson.serializer.SerializerFeature.SortField.getMask(); // features |= // com.alibaba.fastjson.serializer.SerializerFeature.WriteSlashAsSpecial.getMask(); DEFAULT_GENERATE_FEATURE = features; }
所以,解决你这个问题的方法就是
之前调用下
JSONSerializer.config(SerializerFeature.WriteEnumUsingToString,false);即可
fastjson在反序列化时,怎么解析对象中的继承
因为你在main方法中,用的是setA,在序列化前,Text类中的a的实际类型为B,为实例b。但是当反序列化时,它是根据属性名进行的,而此时属性名为 “a”,所以它被反序列化了为类型A。自然,属于子类B的部分就丢失了。如果你想保留子类的部分,那么可以把属性 a 的类型改为 类型 B,相应的set、get方法也改下,就可以了。
java fastjson 序列化、反序列化
不行就分步反序列化1.得到各个JSON Object的反序列化,包括mods_description要定义为String.2.讲mods_description这个JSON Array再反序列化。注意这个是json array,要用List.
fastjson反序列化时如果实例有多个引用时有Bug
发现了一种解决问题方法就是,把TestB.setB2b(Map《Integer, TestC》 b2b)改成 TestB. setB2b(Map b2b)就行.TestB.setB2b(Map《Integer, TestC》 b2b)是eclipse自动生成的getter,setter
Java反序列化安全漏洞怎么回事
反序列化顾名思义就是用二进制的形式来生成文件,由于common-collections.jar几乎在所有项目里都会被用到,所以当这个漏洞被发现并在这个jar包内实现攻击时,几乎影响了一大批的项目,weblogic的中枪立刻提升了这个漏洞的等级(对weblogic不熟悉的可以百度)。至于如何使用这个漏洞对系统发起攻击,举一个简单的例子,我通过本地java程序将一个带有后门漏洞的jsp(一般来说这个jsp里的代码会是文件上传和网页版的SHELL)序列化,将序列化后的二进制流发送给有这个漏洞的服务器,服务器会自动根据流反序列化的结果生成文件,然后就可以大摇大摆的直接访问这个生成的JSP文件把服务器当后花园了。如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。所以这个问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制;假若反序列化可以设置Java类型的白名单,那么问题的影响就小了很多。
反序列化漏洞是因为java的原因吗
:java反序列化漏洞是一类被广泛应用的漏洞,绝大多数的编程语言都会提供内建方法使用户可以将自身应用所产生的数据存入硬盘或通过网络传输出去。这种将应用数据转化为其他格式的过程称之为序列化,而将读取序列化数据的过程称之为反序列化。
更多文章:

ros系统和linux的区别(windows linuxandrod三种操作系统有什么区别和联系)
2025年3月19日 16:40

sqlserver是什么意思啊(SQL server是什么意思)
2025年3月4日 09:50

candle in the wind(美国葬礼上唱的歌曲的名字)
2025年4月1日 23:00

linux内核设计与实现(现在有些互联网公司并不是很好,什么样的程序员才能算“大牛”)
2025年3月13日 23:00

sir模型代码(数学建模,在sir模型中,假设疾病不可治愈,为病人日死亡率,请确定死亡人)
2025年2月16日 06:00

数据恢复精灵注册码(求数据恢复精灵一个可以用的激活码!!!)
2025年3月31日 13:50

borderlands 2好玩吗(个人感觉无主之地2没有1好玩,有人赞同吗)
2025年2月15日 13:10

zencart中文网(zencart 如何添加网站简介,就是在首页添加一小段带有连接的简短文字)
2025年4月4日 01:20

merits是什么意思(merit和advantage有何区别)
2025年3月12日 21:50

随机字符串数php(php:如何生成随机的唯一字母数字字符串)
2025年2月15日 17:40

issued什么意思中文(查询美国签证状态显示issued是什么意思)
2025年2月27日 04:40

传奇版本库网站dede模板(dede网站模板百度收录怎么自适应m端)
2025年2月25日 20:10