我的静态扫描提供了一个漏洞,说我正在将未经验证的输入写入JSON。它建议使用安全序列化函数执行所有序列化到JSON,该函数在单引号或双引号内分隔不受信任的数据并转义任何特殊字符。
知道如何最好地做到这一点?我已经检查了通常的ESAPI类和StringUtils方法,但对于Json来说没什么用。 http响应来自BTW公司内部。我甚至无法在这个主题的讨论或解决方案中找到太多。
HttpEntity entity = response.getEntity();
objectMapper.readValue(entity.getContent(), MyObj.class);
答案 0 :(得分:0)
这可能是因为粘贴到JSON中的不受信任的数据会跳出其值上下文并继续添加或隐藏对象的其他属性。
最近使用Jackson来反序列化不受信任的JSON对象的漏洞可能会通过将意外的类名注入JSON(我自己未经测试的想法)来打开滥用潜在Jackson消费者(进一步降低数据流)的相应方法,< / p>
如果将JSON输出作为javascript对象文字进一步粘贴到HTML / javascript中,则当然可以为该对象和恶意javascript注入结束标记。
如果将JSON输出作为字符串文字粘贴到HTML中,则可以通过感染结束脚本标签</script>
来转义上下文并欺骗简单的编码器。浏览器必须退出脚本标签上下文,才能看到结束标签之后的任何地方,甚至在字符串文字中都看到结束标签。