2010-08-25 49 views
1

我使用一个类似于htat菲尔Hacck提出here如何在使用AntiXssOutputEncoder时忽略元标记?

Unfortuantely的防XSS输出编码器,它运行在我的Site.Master猖獗,污染了元标记,像这样:

<meta name="robots" content="all,&#32;follow" /> 

而且在它的Site.Master被简单地写成:

<meta name="robots" content="all, follow" /> 

这将是在正常情况下正确的输出,但我宁愿能够跳过meta标签中的Site.Master。

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

+0

你如何在你的标记中生成这个标记? – 2010-08-25 12:59:44

+0

它没有生成 - 它写在site.master – jmcd 2010-08-25 15:14:57

+2

那么,AntiXSS编码器如何参与?如果你在你的site.master中有'<%: %>'......你能简单地用'<%= %>'替换它吗? – Charlino 2010-08-25 16:30:16

回答

0

我不认为你会得到这些信息,但是如果你没有像这样的meta标签,你可以尝试白名单允许的值。

的简化版本是:

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

并不理想,但只要我能看到,HttpEncoder不会交给你的上下文。