3

我已经在我的 asp.net Web 应用程序中添加了一个 Htmleditorextender ajax 控件,并在其中放置了 XSS sanitizer 以实现 XSS 安全性,但是现在当我从 Htmleditorextender 检索文本时,sanitizer 会
从中删除 HTML5,并且所有输入都集中在一个中。我在互联网上搜索并发现这是因为 XSS sanitizer 将 HTML5 标签识别为未知的不安全标签,这就是为什么所有 HTML5 标签都从 htmleditorextender 的格式化 HTML 中删除的原因现在我通过使 EnableSanitization="false" 使用 htmleditorextender
我应该删除 XSS sanitizer从我的项目中,或者我应该去

  1. TinyMCE 或
  2. CK编辑器


但是这两个都没有配置为图像上传和用户 hava 添加他们自己的第三方图像上传器。
请告诉我如何在不丢失 htmleditorextender 格式的 html 标签的情况下防止我的网站遭受 XSS 攻击。

4

3 回答 3

1

您是否知道最新的 HtmlEditorExtender 为此提供了替代消毒剂?它被称为 HtmlAgilityPackSanitizerProvider。如果您使用 Nuget 下载,不确定它是否包含在内,但如果您从 CodePlex 下载 zip,它包含一个名为“SanitizerProviders”的文件夹,其中包含备用消毒剂所需的 dll。然后,您可以在配置文件中指定备用消毒剂(包含在下载中)。

这是 Stephen Walther 的博客的链接,他对此进行了解释: http ://stephenwalther.com/archive/2012/06/25/announcing-the-june-2012-release-of-the-ajax-control-toolkit.aspx

我不确定这是否能解决您的问题,或者是否可以选择更新到最新的工具包,但您没有提到尝试这个,所以听起来值得一试。

于 2012-07-09T17:12:45.297 回答
0

作为此问题的解决方法,我<br>在清理之前将所有标签替换为未知短语。并将它们放回 PreRender() 上。它适用于所有主要浏览器。

在 aspx 页面中:

<asp:TextBox runat="server" ID="txtSign" TextMode="MultiLine"/>
<ajaxToolkit:HtmlEditorExtender TargetControlID="txtSign" OnPreRender="htmlEditorExtender1_PreRender"  ID="htmlEditorExtender1" runat="server" />

在后面的代码中:

protected void Page_Load(object sender, EventArgs e)
{
   if (IsPostBack)       
      txtSign.Text = Server.HtmlDecode(txtSign.Text.Replace("&lt;br&gt;", "~_!_~"));           
}

protected void htmlEditorExtender1_PreRender(object sender, EventArgs e)
{
   txtSign.Text = txtSign.Text.Replace("~_!_~", "<br>");
}
于 2014-06-24T03:13:37.413 回答
-3

编写您自己的消毒剂:

网上有很多解析器,例如:White List Sanitizer Code

  • 获得一个好的白名单开始。
  • 白名单是有效 html 标签的列表,即br
  • 更新您的白名单以符合HTML5和任何新的w3c标准和/或您的组织编码标准。
  • 在您开发解决方案时,不要依赖Microsoft来帮助您。
  • 作为一名优秀的开发人员,采取一些举措并跳出框框思考。

示例

  • 我创建了我自己的带有 *缓存白名单 *的消毒剂, 它可用于我认为合适的地方,而不仅仅是 ajax 控件。:)

  • 查看 Ajax htmlagilitypack Provider 源代码以获得灵感以了解其意图:HtmlAgilityPackSanitizerProvider.cs

  • 我删除了 Ajax htmlagilitypack,它太严格了,生活又一次盛大了。

优点:您可以清理/清理所有输入控件的文本属性。

受孕、发育、单元测试以及在不做噩梦的情况下感到被爱和安全的总时间: 2 小时

我希望这有帮助.... :)

免责声明:我今天没有服用拼写和语法医学。对不起。

参考:

Imports System.Linq
Imports HtmlAgilityPack
于 2012-09-19T01:18:31.933 回答