如何使用 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