使用(嵌入式)用户生成的 json 来防止 XSS 黑客攻击的最佳方法?

Best way to prevent XSS hacking with (embedded)user generated json?

见即:http://jsfiddle.net/agv9ya39/

var json = { name: "</script><script>alert(123);</script>" };

注意,我想在页面中嵌入json(数据与页面密切相关,不能缓存,我不想做一个额外的请求)

一个解决方案是在输出之前对整个 json 字符串执行 String.Replace("</script>)。但这感觉很老套,我可能遗漏了其他易受 XSS 攻击的案例。

当然,我也可以确保它永远不会像这样在数据库中结束,但我宁愿有额外的保护,以防万一有什么东西漏进来。

我正在使用 C# 和 Json.Net。

您可以将 <!--</script> 替换为 <\!--<\/script> 以涵盖 JSON 的所有 <script> 突破。不过,考虑将 JSON 放在 data-* 属性中,然后用 JSON.parse.

读取它
<div id="some-relevant-element"
     data-json="{&quot;name&quot;:&quot;</script><script>alert(123);</script>&quot;}">
   …
</div>

<script>
var someRelevantElement = document.getElementById('some-relevant-element');
var json = JSON.parse(someRelevantElement.getAttribute('data-json'));
</script>