4

该类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 控件中。

这是期望的结果吗?

4

3 回答 3

4

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

于 2015-01-22T20:18:53.357 回答
3

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

于 2010-09-23T11:20:21.123 回答
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

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

于 2010-09-23T02:56:31.910 回答