【问题标题】:How does httputility.htmlencode() work? [closed]httputility.htmlencode() 是如何工作的? [关闭]
【发布时间】:2017-08-23 23:47:43
【问题描述】:

我正在尝试实现 HttpUtility.HtmlEncode()。此方法将编码的字符串将用于呈现为 html。如果它被编码,那么它将如何正确呈现?在使用它渲染之前我需要再次解码它吗?在那种情况下,如果我们必须再次解码才能正确呈现它,那么编码的意义何在?

【问题讨论】:

  • 这里没有足够的细节来提供正确的答案。
  • 它将正确呈现,因为浏览器理解该编码。您不需要对其进行解码 - 编码用于渲染无法以原始形式显示的字符
  • HTML 编码有很多用途。其中:避免安全问题(想想 XSS)。此外,向用户显示 HTML 代码(防止浏览器实际解析它)。
  • 我正在编码的字符串中有一个
  • 标记。如果我不编码,那么它会显示带有项目符号的文本(如预期的那样)。但是,如果我对其进行编码,则不是。

标签: c# html


【解决方案1】:

只有在您想要确保其不包含 HTML 元素的任意文本时才应该对其进行编码。 HtmlEncode 将使其呈现为文本,而不是 HTML。

如果您不想这样做,请不要编码或解码。


例如,您的应用程序的一位可爱用户将这个字符串放入文本字​​段中(假设您的框架没有为您阻止 XSS 注入):

string s = "<script>alert('dangerous');</script>";

当它放在没有HtmlEncode 的页面上时,它会在浏览器对话框中向您显示警报(它为此执行Javascript)。如果您在其上调用HtmlEncode,它将呈现为文本。 Javascript 未执行。

<script>alert('dangerous');</script>

【讨论】:

  • 是的,我正在使用这种方法来防止我从 beracode 分析中得到的 XSS 错误。我有一个
  • 标记以及我要编码的字符串。发布编码浏览器不会解释项目符号。
  • 因为当你编码它时,它就不再是HTML了。
  • 我猜 OP 想要 html sanitizer 之类的东西,而不是完全编码整个 html 字符串。
  • @Evk 这是我的猜测。已经在寻找解决方案了。
  • @samirkumartripathy 例如见here
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签