使用HttpUtility.HtmlEncode和处理特殊字符/元音变音符等

本文关键字:音符 特殊字符 HttpUtility HtmlEncode 处理 使用 | 更新日期: 2023-09-27 18:28:57

我使用HttpUtility.HtmlEncode来净化用户输入,以防止XSS攻击。我的问题是HtmlEncode将像ü这样的特殊字符转换为它们的Html等效代码。我找不到关于它编码和不编码的文档。然后为了正确地向用户显示这个,我需要HtmlDecode它。

2个问题:

  1. HtmlEncode如何决定它需要编码像ü这样的假定有效字符,而不是像标准英语字母表字符那样的其他unicode字符。HtmlEncode是否对所有非ascii字符进行编码?在不创建特殊忽略列表的情况下,防止脚本标记但允许使用元音变音符等特殊字符的最佳方法是什么?

  2. 使用HtmlDecode是否会在转换回潜在的恶意javascript 时暴露风险

使用HttpUtility.HtmlEncode和处理特殊字符/元音变音符等

  1. HTMLEncode()主要做两件事:
    1. 它处理不属于默认127 ASCII字符集的任何字符
    2. 它对可能被浏览器误解为有效HTML、CSS或Javascript的字符进行编码,以防止意外和故意更改网页
  2. 使用它有危险吗?使用任何东西都可能是危险的,这取决于你如何使用它。问题不在于"你在解码吗?",而在于"你正在解码用户数据吗?"。使用它肯定是危险的,这取决于你对结果的处理。即使只是将其显示给客户端也可能导致XSS

关于编码和解码,我在这里写的要多得多,在我之前的人已经解释得比我详尽得多。这篇关于在Asp.Net中防止XSS的文章可以解释什么是XSS以及如何防止它。