【问题标题】:Sanitizing HTML - Get Some Unknown Encoding?清理 HTML - 获取一些未知编码?
【发布时间】:2017-10-19 15:07:31
【问题描述】:

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

输入:

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

输出:

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

请注意,<>& 分别被编码为 <>&amp。我有两个问题:

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

旁注 - 所有有害内容都会根据需要删除,这种格式更改无论如何都发生在“安全”html 上,只是为了指出我没有撤消库的任何安全功能,所以我们没有很长的时间对此进行讨论。

【问题讨论】:

  • 如果您知道编码是什么,您可能会从发布的信息中知道。 @艾伦拉里默
  • HTML 编码/解码内置在 Asp.Net 中。请参阅this question 了解更多信息。

标签: encoding .net-core html-sanitizing


【解决方案1】:

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

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

  • 小于号 (<。
  • 大于号 (>) 转换为 >
  • 与号字符 (&) 转换为 &
  • 双引号字符 (") 转换为 "
  • 代码大于或等于 0x80 的任何 ASCII 代码字符 转换为&#<number>,其中 是 ASCII 字符值。

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

【讨论】:

    猜你喜欢
    • 2013-06-05
    • 2017-01-21
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2019-05-05
    • 2015-03-20
    相关资源
    最近更新 更多