清理用户输入以防止 XSS

Sanitising user input to prevent XSS

我开发的一个内部网络应用程序将很快进行渗透测试。它使用 Windows 身份验证。

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

这篇文章讨论了净化用户输入。 JavaScript/Jquery 中是否有函数可以执行此操作?

例如,如果用户输入:<script type='text/javascript'>alert('xss');</script>,那么我该如何清理它?要防止 SQL 注入攻击,您可以使用命令参数,这些参数内置于 .NET 中。

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

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

假设您想在 div 中显示用户输入,您会这样做:

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

这将自动 'sanitize' 输入(实际上并非如此,见下文),您将看到输入 HTML 作为文本而不是作为 HTML 注入.当然,如果您使用了 .html() ,那么它将按原样转储。

实际发生的事情是您(或者更确切地说 jquery 是)给浏览器一个明确的指令,将某些内容视为文本而不是 HTML,因此它从不尝试首先解析它地方,与尝试清理将要解析的内容相比,这始终是更安全的选择。