【问题标题】:Why are these tags removed with MGans's HtmlSanitizer?为什么这些标签会被 MGans 的 HtmlSanitizer 删除?
【发布时间】:2021-09-06 22:23:38
【问题描述】:

我正在考虑使用 MGans 的 HtmlSanitizer Nuget 包来清理我们应用程序的输入和输出。给定以下输入并应用Sanitize() 方法,将返回以下内容:

输入:

this  is my data
<p> here</p>
<script type="text/javascript"/>
<b>and here</b>
alert("something");
done here
<script type="text/javascript">alert("again");</script>
done

输出:

this  is my data
<p> here</p>

done

如果第一个 &lt;script/&gt; 标记是不带参数的自闭合标记,为什么要删除标记 &lt;b&gt;and here&lt;/b&gt;alert("something"); 和文本 done here

【问题讨论】:

  • &lt;script type="text/javascript"/&gt; 不会做任何事情,因为它正在关闭。为什么还要拥有它?我认为它正在删除内容,因为它正在寻找关闭标签
  • 用户输入我的朋友,一切皆有可能。
  • Rudolf 那么这是因为它正在寻找一个关闭标签。我也不确定这与jQuery 有什么关系
  • 我的标签不好

标签: html xss sanitization html-sanitizing


【解决方案1】:

在 HTML4 和 HTML5 中,&lt;script&gt; 标签不能自动关闭。自闭标签是规范中的void elements

解析时,第一个&lt;script&gt;标签被视为开始标签,最后一个&lt;/script&gt;标签为其结束标签。

浏览器会将斜杠视为格式错误的输入并忽略它,然后将其后面的内容作为 JavaScript 代码执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多