【问题标题】:How to handle XSS in a url query string in asp.net 3.5 using C#如何使用 C# 在 asp.net 3.5 中处理 url 查询字符串中的 XSS
【发布时间】:2016-07-14 18:31:52
【问题描述】:

我目前正在尝试保护我的网站免受 URL 中的 XSS 攻击。例如,如果攻击者使用 Firefox,他们可以执行以下操作

myxsssite.com/mypage.aspx?d"><script class="none&>alert(1);</script clas="none&><!--=1

脚本将运行。我已经搜索了几天,似乎找不到有效的解决方案。目前我已经尝试过 MS 的 AntiXSS 库。我不认为它工作正常我像这样编码整个网址

Mircosoft.Security.Application.Encoder.HtmlEncode(path);

我也尝试了这个类中的所有其他方法,并且在页面加载之前脚本仍在执行。我正在使用带有 Webforms 的 ASP.net 3.5,但无法升级。

【问题讨论】:

  • 要提供完整的答案,有必要了解您在何处以及如何准确地使用编码值。
  • 然后将编码后的路径发送到app.Context.RewritePath,返回给IHttpModule类的Init方法。
  • XSS 仅在您将恶意内容插入网页时发生。这是在哪里发生的?
  • 如最初的问题所述,它发生在 firefox url 中。

标签: c# asp.net vb.net xss antixsslibrary


【解决方案1】:

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

【讨论】:

  • 这是我当前使用的库,没有 sanitize 方法。
  • 这很奇怪,我没有看到 Sanitizer 类,我查看了程序集资源管理器、对象浏览器并使用了自动完成功能。我也在我的项目中尝试了AntiXssLibrary的每个版本我只有以下AntiXss、Encoder、UnicodeCharacterEncoder
  • 你是对的,这个dll是HtmlSanitizationLibrary.dll,我的错,添加了新链接
猜你喜欢
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多