试图阻止通过URL执行的恶意XSS脚本



我正在处理包含许多模块的.NET 4.5 Web应用程序(非MVC(。在测试期间,我发现我的应用程序很容易受到反映的跨站点脚本攻击的攻击。

例如,这是我的示例URL的样子:

   example.com/abc.aspx?id=1234

现在,如果有人试图输入任何脚本代替ID值,例如。

    id=<somescript>

此脚本将被执行。

如何阻止在URL中输入的脚本?目前,我不专注于基于UI的输入元素,例如文本框等。

我需要一种阻止恶意脚本通过URL执行的方法。

我试图启用 valialaterequest 属性。尽管它阻止了脚本在整个应用程序中执行,但有一个问题。它还阻止了在UI基于UI的输入字段(如文本框(中输入的安全标记,从而被执行。

对于我的应用程序,用户期望在TextaReas和Textboxs中输入一些示例标记。

目前,我只想阻止基于浏览器的XSS脚本。我该如何实现?

更新:

我尝试在我的web.config文件中添加以下自定义标头:

X-XSS保护 - 但不受Firefox

的支持

content-security-policy-不受IE的支持。

我正在工作的应用程序非常大,因此,出于验证目的,我需要花费很多时间进行代码。有什么办法可以在Web.config级别上进行更改?

您可以尝试将System.Web.Security.AntiXss.AntiXssEncoder设置(自NET 4.5以来可用(作为ASP.NET应用程序的默认编码器。

它编码要在URL,HTML,CSS或XML字符串中使用的字符串。

web.config中的用法:

<httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder" />

有一个早期版本的.NET:Microsoft.Security.Application.AntiXssEncoder在Nuget上可用的替代方案。在web.config中使用:

<httpRuntime encoderType="Microsoft.Security.Application.AntiXssEncoder, AntiXssLibrary" />

您可以找到有关如何防止XSS攻击此OWASP文章的更多信息。

最佳方法是使用valialaterequest属性,并更改逻辑如何以及为什么在get请求中传递html。也许您只需要传递此文本框的ID或值。

相关内容

  • 没有找到相关文章

最新更新