Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用HttpUtility.HtmlEncode并处理特殊字符/umlaut等_C#_Asp.net_Utf 8_Ascii_Html Encode - Fatal编程技术网

C# 使用HttpUtility.HtmlEncode并处理特殊字符/umlaut等

C# 使用HttpUtility.HtmlEncode并处理特殊字符/umlaut等,c#,asp.net,utf-8,ascii,html-encode,C#,Asp.net,Utf 8,Ascii,Html Encode,我正在使用HttpUtility.HtmlEncode清理用户输入,以防止XSS攻击。我的问题是HtmlEncode将像u这样的特殊字符转换为它们的Html等效代码。我找不到关于它编码和不编码的文档。然后为了正确地向用户显示,我需要HtmlDecodeit 2个问题: HtmlEncode如何决定它需要编码一个假定有效的字符,如u,而不是其他unicode字符,如标准英文字母字符。HtmlEncode是否对所有非ascii字符进行编码?防止脚本标记但允许特殊字符(如umlauts)而不创建特殊忽

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

2个问题:

  • HtmlEncode
    如何决定它需要编码一个假定有效的字符,如
    u
    ,而不是其他unicode字符,如标准英文字母字符。
    HtmlEncode
    是否对所有非ascii字符进行编码?防止脚本标记但允许特殊字符(如umlauts)而不创建特殊忽略列表的最佳方法是什么

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

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

  • 关于编码和解码的内容要比我在这里写的多得多,在我之前的人已经解释得比我详尽得多。可以向您解释XSS是什么以及如何防止它。

    “我的问题是HtmlEncode转换特殊字符”为什么会有问题?您的字符串应该显示为HTML源代码(那么HtmlEncode是正确的)或者显示为纯文本(那么不要使用HtmlEncode)。它不会将英文字母编码为HTML代码。它不需要。请告诉我们您如何处理字符串以及如何向最终用户显示字符串。为什么需要对特殊的德语和法语字符(如umlaut和^)进行编码,因为这样做是安全的。HtmlEncode将处理的所有字符都是=任何非ASCII字符+任何可能被浏览器误读的ASCII字符,如<>等?@user48408是的,完全正确。假设这是正确的,我将其标记为答案。如果你对此有任何文档,请在评论中发表