【问题标题】:Microsoft AntiXSS - Is there a need to Decode?Microsoft AntiXSS - 是否需要解码?
【发布时间】:2018-06-09 03:24:42
【问题描述】:

HttpUtility 类提供编码和解码。但是,当我使用 MS AntiXSS 3.1 库时,我有一套仅用于编码的方法,这是否意味着可以避免解码?

例如

在应用 AntiXSS 之前:

lblName.Text = "ABC" + "<script> alert('Inject'); </script";

应用 AntiXSS 后:

lblName.Text = AntiXSS.HTMLEncode("ABC" + "<script> alert('Inject'); </script");

因此,在应用编码之后,HTML 标记会显示在我的 Label 控件中。

这是理想的结果吗?

【问题讨论】:

  • 我相信 AntiXSS 库用于页面的最终输出。由于输出是最终目的地,我认为没有理由解码。

标签: c# asp.net html-encode antixsslibrary


【解决方案1】:

您可以使用HttpUtility.HtmlDecode 方法来解码 AntiXss 编码文本(或任何编码文本)。不需要显式的 AntiXss 解码。

【讨论】:

    【解决方案2】:

    是的,我认为这是理想的输出。这是因为脚本没有被执行。如果脚本已被执行,则会显示警报而不是脚本标签。所以这是安全代码。

    【讨论】:

      【解决方案3】:

      这取决于您的输入来自哪里,以及您想用它做什么。很多时候框架会在你看到东西之前为你解码 - Request.Form、Request.QueryString 等。

      如果您正在从其他地方(例如数据库)读取编码字符串,那么您可能需要对其进行解码,否则您会看到双重编码;

      I 3> AntiXSS encoded once becomes
      
      I 3&gt; AntiXSS which then becomes after double encoding
      
      I 3&amp;gt; AntiXSS
      

      这可能会产生意想不到的副作用,具体取决于消耗输出的内容。解码直到字符串不再变化的行为是规范化的一个例子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 2014-12-18
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多