我有一个ASP.NET MVC2网站,它大量使用Ajax和JSON从数据库加载数据并填充HTML。我希望能够对JSON对象进行编码,以便将任何HTML呈现为文本而不是HTML。我很惊讶没有找到很多讨论/明显的解决方案,因为这似乎是一个很大的潜在XSS问题。
我是否忽视了某些事情,有一种简单的方法可以做到这一点?或者我是否需要为此提出内部解决方案?如果我自己这样做,我应该在模型上,控制器上还是在jquery中进行?
答案 0 :(得分:4)
要防止XSS,请在输出到视图时对HTML进行编码。 JSON中的数据应该保持原始状态(JSON编码除外,这应该由JSON库自动完成)。
如果您使用JavaScript请求JSON,然后将其中一些插入到文档中。使用document.createTextNode(String)
从数据创建textNode(它处理HTML中具有特殊含义的字符),然后将该textNode插入到文档中。
答案 1 :(得分:1)
一位同事向我指出,当我应该使用.text()时,我正在使用.html()来呈现JSON数据,这是一种使用.createTextNode()的隐式方法。