Asp.net mvc 如何在使用AntiXSSoutPunteCoder时忽略元标记?

Asp.net mvc 如何在使用AntiXSSoutPunteCoder时忽略元标记?,asp.net-mvc,Asp.net Mvc,我使用的是一个反XSS输出编码器,与htat Phil Hacck提出的类似 不幸的是,它在我的Site.master上肆虐,并像这样弄脏了meta标签: <meta name="robots" content="all,&#32;follow" /> 而在Site.master中,它简单地写为: <meta name="robots" content="all, follow" /> 这在正常情况下是正确的输出,但我更希望能够跳过site.master中的

我使用的是一个反XSS输出编码器,与htat Phil Hacck提出的类似

不幸的是,它在我的Site.master上肆虐,并像这样弄脏了meta标签:

<meta name="robots" content="all,&#32;follow" />
而在Site.master中,它简单地写为:

<meta name="robots" content="all, follow" /> 
这在正常情况下是正确的输出,但我更希望能够跳过site.master中的meta标记


在运行自己的HttpEncoder时,有没有办法做到这一点?

我认为您没有得到这些信息,但是如果您没有很多这样的元标记,您可以尝试将允许的值列为白名单

简化版本为:

protected override void HtmlAttributeEncode(string value, TextWriter output)
{
    if (value != "all,&#32;follow")
    {
        output.Write(AntiXss.HtmlAttributeEncode(value));
    } 
    else
    {
        output.Write(value);
    }
}

不太理想,但据我所知,它没有提供上下文。

您如何在标记中生成此标记?它没有生成-它写在站点中。那么AntiXSS编码器是如何参与的呢?如果你在你的网站上有。。。你能简单地用替换它吗?你可能需要阅读Phil Haack写的原始文章。HttpEncoder在发送之前处理所有输出。标记只是作为普通HTML编写的,不是吗