Java jackson的JSON注入修复
我的静态扫描显示一个漏洞,表示我正在将未经验证的输入写入JSON。它建议对JSON的所有序列化都使用一个安全的序列化函数来执行,该函数将不受信任的数据限定在单引号或双引号内,并转义任何特殊字符 你知道怎么做才是最好的吗?我已经检查了常用的ESAPI类和StringUtils方法,但是Json没有太多内容。http响应来自公司内部。顺便说一句,我真的找不到太多关于这个话题的讨论或解决方案Java jackson的JSON注入修复,java,json,rest,security,Java,Json,Rest,Security,我的静态扫描显示一个漏洞,表示我正在将未经验证的输入写入JSON。它建议对JSON的所有序列化都使用一个安全的序列化函数来执行,该函数将不受信任的数据限定在单引号或双引号内,并转义任何特殊字符 你知道怎么做才是最好的吗?我已经检查了常用的ESAPI类和StringUtils方法,但是Json没有太多内容。http响应来自公司内部。顺便说一句,我真的找不到太多关于这个话题的讨论或解决方案 HttpEntity entity = response.getEntity(); objectMapper.
HttpEntity entity = response.getEntity();
objectMapper.readValue(entity.getContent(), MyObj.class);
- 这可能是因为粘贴到JSON中的不可信数据跳出其值上下文并继续添加或隐藏对象的其他属性
- 最近使用Jackson反序列化不受信任的JSON对象的漏洞可能会通过将意外的类名注入JSON(我自己未经测试的想法)来滥用潜在的Jackson消费者(数据流的下游)
- 如果JSON输出作为javascript对象文本进一步粘贴到HTML/javascript中,那么为对象和恶意javascript注入一个结束标记肯定会带来奇迹
- 如果JSON输出作为字符串文本粘贴到HTML中,则可以通过插入结束脚本标记
来跳出上下文并欺骗简单的编码器。浏览器需要在看到结束标记超过开始标记的任何位置时退出脚本标记上下文,即使在字符串文本中也是如此