我正在使用HtmlSanitizer解析.NET Core
中的输入阻止XSS Injections
。 HtmlSanitizer实现了AngleSharp - 我不知道Angle Sharp做了什么,但它编码了一些字符,如下所示:
输入:
!@#$%^&*()_+{}:"<>?~
输出:
!@#$%^&*()_+{}:"<>?~
请注意,<
,>
和&
分别编码为<
,>
和&
。我在这里有两个问题:
旁注 - 所有有害物品都会根据需要被剥离,这种格式变化发生在&#34; safe&#34; html无论如何,只是要指出我没有撤消库的任何安全功能,所以我们不会对此进行长时间的讨论。
答案 0 :(得分:0)
这些字符串是HTML编码的。 html编码的目的是为了防止XSS,但由于我已经剥离了任何可能有害的代码,所以在我的情况下它只是矫枉过正。更多细节可以在这个答案中找到(从那里复制的引用):
HTML.Encode() - What/How does it prevent scripting security problems in ASP .NET?
- 小于字符(&lt;)将转换为
<
。- 大于号字符(&gt;)将转换为
>
。- &符号(&amp;)转换为
&
。- 双引号字符(“)转换为
"
。- 任何代码大于或等于0x80的ASCII代码字符 转换为
&#<number>
,其中 是ASCII字符值。
您可以使用内置工具对.NET Core
中的字符串进行html编码和解码,如here所述。