清理HTML - 获取一些未知编码?

时间:2017-10-19 15:07:31

标签: encoding .net-core html-sanitizing

我正在使用HtmlSanitizer解析.NET Core中的输入阻止XSS Injections。 HtmlSanitizer实现了AngleSharp - 我不知道Angle Sharp做了什么,但它编码了一些字符,如下所示:

输入:

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

输出:

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

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

  1. 这是什么编码?
  2. (可选)有没有办法使用AngleSharp或其他库来撤消它?
  3. 旁注 - 所有有害物品都会根据需要被剥离,这种格式变化发生在&#34; safe&#34; html无论如何,只是要指出我没有撤消库的任何安全功能,所以我们不会对此进行长时间的讨论。

1 个答案:

答案 0 :(得分:0)

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

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

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

您可以使用内置工具对.NET Core中的字符串进行html编码和解码,如here所述。