问题描述
我正在考虑使用 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
如果第一个 <b>and here</b>
标记是没有参数的自闭合标记,为什么要删除标记 alert("something");
、done here
和文本 <script/>
?
解决方法
在 HTML4 和 HTML5 中,<script>
标签不能自闭合。自闭合标签是规范中的 void elements。
解析时,第一个 <script>
标签被视为开始标签,最后一个 </script>
标签是其结束标签。
浏览器会将斜杠视为格式错误的输入并忽略它,然后将其后的内容作为 JavaScript 代码执行。