GSON漏洞或反序列化漏洞可避免
-
28-10-2019 - |
题
我打算使用gson的fromJson()方法来解析来自浏览器的字符串。这样做有潜在的漏洞吗?我要转换为的数据类型相对简单,就是列表和布尔值。但是由于gson使用反射,我需要注意什么吗?
例如,对于较早的jvm(6.24之前的版本),可能已对整数使用DOS攻击,整数解析器将挂起。
一些聪明的json可以使gson开始加载应该的类吗?
解决方案
Gson要注意的是您使用的是哪种类型的构建器(请参阅自定义解串器/序列化器)
Gson的另一个弱点是,在反序列化时(例如使用自定义变量),最好检查要传递的对象的类型(使用instanceof)。
其他要点:Gson将根据传递的类型自动转换变量。
即。{“ var1”:1,“ var2”:“ 1”} 第一个将转换为整数,第二个将基于字符串,因此我会注意您的对象转换。
其他提示
出于安全原因,Gson项目开发人员建议不允许反序列化代码加载用户指定的类定义-应该仔细控制通用类型的事物的反序列化。
编写JSON解析器并不难,任何使用良好的开源版本都应该像人们希望的那样安全。当然,解析器可能包含一个使缓冲区溢出的错误,但是,逻辑又很简单,如果代码编写得当且经过良好审查,就不会发生这种情况。
更大的危险是您自己可能无法正确检查解析结果并接受例如超出应用程序范围的数字或字符串太长。
不隶属于 StackOverflow