清理用户输入以防止XSS

时间:2017-03-23 12:31:36

标签: javascript jquery xss

我开发的内部Web应用程序很快就会进行笔测试。它使用Windows身份验证。

它有很多AJAX。我最近在阅读有关跨站点脚本的文章:https://en.wikipedia.org/wiki/Cross-site_scripting

文章讨论了如何清理用户输入。是否有一个函数可以在JavaScript / Jquery中执行此操作?

例如,如果用户输入:<script type='text/javascript'>alert('xss');</script>,那么我该如何消毒呢?要防止SQL注入攻击,请使用内置于.NET的命令参数。

我可以自己替换不合适的标签,但我只是想确保没有内置的方法来做到这一点。我花了一些时间谷歌搜索,但我没有找到我的具体问题的答案。

1 个答案:

答案 0 :(得分:0)

始终将用户输入视为文本,而不是HTML。

所以说你想在div中显示用户输入,你会这样做:

$("#mydiv").text(userInput);

这将自动“清理”输入(实际上并没有,见下文),您将看到输入HTML为文本而不是将其作为HTML注入。当然,如果您使用.html(),那么它只会按原样转储。

实际上发生的事情是你(或者更确切地说是jquery)给浏览器一个明确的指令来把东西当作文本而不是HTML来处理它所以它从不试图首先解析它,这总是比较安全的选择尝试清理它要解析的东西。