如何使用 C# 在 asp.net 3.5 中处理 url 查询字符串中的 XSS
How to handle XSS in a url query string in asp.net 3.5 using C#
我目前正在尝试保护我的站点免受 Url 中的 XSS 攻击。例如,如果攻击者使用的是 Firefox,他们可以执行以下操作
myxsssite.com/mypage.aspx?d"><script class="none&>alert(1);</script clas="none&><!--=1
脚本将是 运行。我已经搜索了几天,但似乎找不到可行的解决方案。目前我已经尝试过 MS 的 AntiXSS 库。我不认为它工作正常我正在编码整个 url 像这样
Mircosoft.Security.Application.Encoder.HtmlEncode(path);
我也尝试了此 class 中的所有其他方法,但脚本仍在页面加载前执行。我正在使用 ASP.net 3.5 和 Webforms,但我无法升级。
https://www.microsoft.com/en-us/download/details.aspx?id=28589
他们有这个 dll,基本上你需要做的就是使用 sanitize 方法,如果原始值和净化后的值之间有变化,这意味着可能存在 XSS 尝试,你要么全部扔掉,要么只使用经过消毒的值。
不要使用任何编码方法,有一种方法叫做 "sanitize"。
编辑:代码示例
val = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(val);
val = System.Web.HttpUtility.HtmlDecode(val);
编辑 2:
https://www.nuget.org/packages/HtmlSanitizationLibrary/
我使用的dll是HtmlSanitizationLibrary.dll
我目前正在尝试保护我的站点免受 Url 中的 XSS 攻击。例如,如果攻击者使用的是 Firefox,他们可以执行以下操作
myxsssite.com/mypage.aspx?d"><script class="none&>alert(1);</script clas="none&><!--=1
脚本将是 运行。我已经搜索了几天,但似乎找不到可行的解决方案。目前我已经尝试过 MS 的 AntiXSS 库。我不认为它工作正常我正在编码整个 url 像这样
Mircosoft.Security.Application.Encoder.HtmlEncode(path);
我也尝试了此 class 中的所有其他方法,但脚本仍在页面加载前执行。我正在使用 ASP.net 3.5 和 Webforms,但我无法升级。
https://www.microsoft.com/en-us/download/details.aspx?id=28589
他们有这个 dll,基本上你需要做的就是使用 sanitize 方法,如果原始值和净化后的值之间有变化,这意味着可能存在 XSS 尝试,你要么全部扔掉,要么只使用经过消毒的值。
不要使用任何编码方法,有一种方法叫做 "sanitize"。
编辑:代码示例
val = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(val);
val = System.Web.HttpUtility.HtmlDecode(val);
编辑 2: https://www.nuget.org/packages/HtmlSanitizationLibrary/
我使用的dll是HtmlSanitizationLibrary.dll