为什么使用 MGans 的 HtmlSanitizer 删除这些标签?

Why are these tags removed with MGans's HtmlSanitizer?

我正在考虑使用 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

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

在HTML4和HTML5中,<script>标签不能自闭。自闭标签是规范中的 void elements

解析时,第一个 <script> 标签被视为开始标签,最后一个 </script> 标签被视为结束标签。

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