如何确定字符串是否已在C#中以编程方式编码?

Gib*_*boK 13 c# asp.net

如何确定字符串是否已在C#中以编程方式编码?

让我们举例如字符串:

<p>test</p>
Run Code Online (Sandbox Code Playgroud)

我想让我的逻辑理解它已被编码的这个值..任何想法?谢谢

Fré*_*idi 51

您可以使用HttpUtility.HtmlDecode()来解码字符串,然后将结果与原始字符串进行比较.如果它们不同,原始字符串可能已被编码(至少,例程中发现了要解码的内容):

public bool IsHtmlEncoded(string text)
{
    return (HttpUtility.HtmlDecode(text) != text);
}
Run Code Online (Sandbox Code Playgroud)

  • @GIbboK: - 我想喝一杯咖啡. - 使用杯子和咖啡! - 但是,如果我不想使用杯子,咖啡和饮料,但只是想把它放在我肚子里呢? (7认同)
  • 如果您正在尝试测试用户输入的值,那就非常糟糕.如果我输入`"> <script> alert('XSS'); </ script>&amp;`那么它将解码`&amp;`,字符串将不匹配,并且它将被计为编码. (4认同)

Guf*_*ffa 8

严格来说,这是不可能的.字符串包含的内容实际上可能是预期的文本,其编码版本可能是&amp;lt;p&amp;gt;test&amp;lt;/p&amp;gt;.

您可以在字符串中查找HTML实体,并对其进行解码,直到没有剩余,但以这种方式解码数据会有风险,因为它假定事情可能不正确.