2017-10-19 47 views
-1

我正在使用HtmlSanitizer解析输入.NET Core阻止XSS Injections。 HtmlSanitizer实现AngleSharp - 我不知道什么角度夏普的做法,但它编码某些字符,像这样:消毒HTML - 获取一些未知的编码?

输入:

&#33;@#$%^&*()_+{}:"<>?~

输出:

&#33;@#$%^&amp;*()_+{}:"&lt;&gt;?~

注意<,>&编码为&lt;,&gt;和分别为。我在这里有两个问题:

  1. 这是什么编码?
  2. (可选)有没有办法使用AngleSharp或其他库来撤消它?

旁注 - 为所需要的所有东西有害被剥离出来,这种格式的变化发生在“安全的” HTML反正,只是想指出,我不是撤销库的任何安全功能,所以我们不对此有长时间的讨论。

+0

请提供[MCVE。 –

+0

如果你知道什么是编码w ^因为,你可能会从所发布的信息中知道。 @AlanLarimer – VSO

+0

Asp.Net内置了HTML编码/解码。请参阅[这个问题](https://stackoverflow.com/questions/33924496/where-is-htmlencode-in-asp-net-5)了解更多信息。 – Amy

回答

0

这些字符串是HTML编码的。 html编码的目的是为了防止XSS,但由于我已经剥离了任何可能有害的代码,对我来说这只是矫枉过正。更多细节可在此答案(引自那里复制的)中找到:

HTML.Encode() - What/How does it prevent scripting security problems in ASP .NET?

  • 的低于字符(<)转化为&lt;
  • 大于号(>)将转换为&gt;
  • &符号(&)被转换为&amp;
  • 的双引号(“)被转换为&quot;
  • 任何ASCII码字符,其代码是大于或等于0x80的 转换为&#<number>,其中 是ASCII字符值。

您可以.NET Core使用内置的工具,如描述here HTML编码和解码的字符串。