清理用户输入以防止 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,因此它从不尝试首先解析它地方,与尝试清理将要解析的内容相比,这始终是更安全的选择。
我开发的一个内部网络应用程序将很快进行渗透测试。它使用 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,因此它从不尝试首先解析它地方,与尝试清理将要解析的内容相比,这始终是更安全的选择。