GSON漏洞或反序列化的漏洞可以避免

时间:2011-12-06 16:24:46

标签: java security gson defensive-programming

我打算使用gson的fromJson()方法来解析来自浏览器的字符串。这样做有任何潜在的漏洞吗?我要转换的数据类型相对简单,List和布尔值。但是由于gson使用反射,我有什么需要注意的吗?

例如,对于较旧的jvm(6.24之前版本),可能会对整数解析器挂起的整数使用DOS攻击。

一些聪明的json会导致gson开始加载它应该的类吗?

3 个答案:

答案 0 :(得分:2)

Gson需要注意的是您正在使用的构建器类型(请参阅自定义反序列化器/序列化器)

Gson有另一个弱点,当你反序列化时,(假设使用自定义的)你最好检查你传递的对象的类型(使用instanceof)。

其他要点:Gson会根据传递的类型自动转换变量。

即。 {“var1”:1,“var2”:“1”} 第一个将被转换为一个整数,第二个将基于一个字符串,因此我会注意你的对象转换。

答案 1 :(得分:2)

出于安全原因,Gson项目开发人员建议不要允许反序列化代码加载用户指定的类定义 - 应谨慎控制泛型类型事物的反序列化。

答案 2 :(得分:-2)

编写JSON解析器并不困难,任何使用良好的开源版本都应该像人们希望的那样安全。当然,解析器可能包含一个使其受缓冲区溢出等影响的错误,但是,再一次,逻辑很简单,如果代码编写得好并且经过充分审查,则不应该发生。

更大的危险是你自己可能无法正确检查解析的结果,并接受一个超出你的应用程序范围的数字,或一个太长的字符串。