消毒HTML - 获取一些未知的编码?
问题描述:
我正在使用HtmlSanitizer解析输入.NET Core
阻止XSS Injections
。 HtmlSanitizer实现AngleSharp - 我不知道什么角度夏普的做法,但它编码某些字符,像这样:消毒HTML - 获取一些未知的编码?
输入:
!@#$%^&*()_+{}:"<>?~
输出:
!@#$%^&*()_+{}:"<>?~
注意<
,>
和&
编码为<
,>
和分别为。我在这里有两个问题:
- 这是什么编码?
- (可选)有没有办法使用AngleSharp或其他库来撤消它?
旁注 - 为所需要的所有东西有害被剥离出来,这种格式的变化发生在“安全的” HTML反正,只是想指出,我不是撤销库的任何安全功能,所以我们不对此有长时间的讨论。
答
这些字符串是HTML编码的。 html编码的目的是为了防止XSS,但由于我已经剥离了任何可能有害的代码,对我来说这只是矫枉过正。更多细节可在此答案(引自那里复制的)中找到:
HTML.Encode() - What/How does it prevent scripting security problems in ASP .NET?
- 的低于字符(<)转化为
<
。- 大于号(>)将转换为
>
。- &符号(&)被转换为
&
。- 的双引号(“)被转换为
"
。- 任何ASCII码字符,其代码是大于或等于0x80的 转换为
&#<number>
,其中 是ASCII字符值。
您可以.NET Core
使用内置的工具,如描述here HTML编码和解码的字符串。
请提供[MCVE。 –
如果你知道什么是编码w ^因为,你可能会从所发布的信息中知道。 @AlanLarimer – VSO
Asp.Net内置了HTML编码/解码。请参阅[这个问题](https://*.com/questions/33924496/where-is-htmlencode-in-asp-net-5)了解更多信息。 – Amy