使用(嵌入式)用户生成的json防止XSS黑客攻击的最佳方法
本文关键字:XSS 防止 黑客 攻击 方法 最佳 json 使用 嵌入式 用户 | 更新日期: 2023-09-27 18:13:27
参见:http://jsfiddle.net/agv9ya39/
var json = { name: "</script><script>alert(123);</script>" };
注意,我do想在页面中嵌入json(数据与页面密切相关,无法缓存,我不想做额外的请求(
一种解决方案是在输出之前对整个json字符串执行String.Replace("</script>
(。但它感觉很粗糙,我可能错过了XSS易受攻击的其他情况。
当然,我也可以确保它在数据库中永远不会像这样结束,但我宁愿有一个额外的保护,以防有什么东西滑进来。
我正在使用C#和Json.Net.
您可以用<'!--
和<'/script>
替换<!--
和</script>
,以覆盖JSON的所有<script>
中断。不过,可以考虑将JSON放在data-*
属性中,并使用JSON.parse
读取它。
<div id="some-relevant-element"
data-json="{"name":"</script><script>alert(123);</script>"}">
…
</div>
<script>
var someRelevantElement = document.getElementById('some-relevant-element');
var json = JSON.parse(someRelevantElement.getAttribute('data-json'));
</script>