我开发的内部Web应用程序很快就会进行笔测试。它使用Windows身份验证。
它有很多AJAX。我最近在阅读有关跨站点脚本的文章:https://en.wikipedia.org/wiki/Cross-site_scripting
文章讨论了如何清理用户输入。是否有一个函数可以在JavaScript / Jquery中执行此操作?
例如,如果用户输入:<script type='text/javascript'>alert('xss');</script>
,那么我该如何消毒呢?要防止SQL注入攻击,请使用内置于.NET的命令参数。
我可以自己替换不合适的标签,但我只是想确保没有内置的方法来做到这一点。我花了一些时间谷歌搜索,但我没有找到我的具体问题的答案。
答案 0 :(得分:0)
始终将用户输入视为文本,而不是HTML。
所以说你想在div中显示用户输入,你会这样做:
$("#mydiv").text(userInput);
这将自动“清理”输入(实际上并没有,见下文),您将看到输入HTML为文本而不是将其作为HTML注入。当然,如果您使用.html(),那么它只会按原样转储。
实际上发生的事情是你(或者更确切地说是jquery)给浏览器一个明确的指令来把东西当作文本而不是HTML来处理它所以它从不试图首先解析它,这总是比较安全的选择尝试清理它要解析的东西。