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



参见: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="{&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>

最新更新