无法使用Firefox编码/转义的CSS值

时间:2015-06-04 18:11:47

标签: css firefox xss owasp antixsslibrary

根据OWASP的建议,应该转义来自不受信任来源的CSS值。

为了尝试遵循这些建议,我使用Microsoft的AntiXss库来逃避我的CSS值,特别是System.Web.Security.AntiXss.AntiXssEncoder.CssEncode(value)

这会产生一个如下所示的样式表:

a,
a:visited {
    color:\00002329c;
}
a:hover,
a:active {
    color:\000023036;
}
body {
    background:\000023eee;
    color:\000023333;
    font-family:Arial;
    font-size:15px;
}

这适用于IE和Chrome,但Firefox无法识别转义值。

这是Firefox的错误还是我误解了如何实施OWASP建议?另外,如果这是Firefox的缺点,那么最好的解决方法是什么?

2 个答案:

答案 0 :(得分:0)

我做了一个快速的POC,一开始它看起来确实是firefox中的一个bug。为了简单起见,我使用的代码尝试在IE,Chrome,Safari和Firefox中打开此网页。使用IE,Chrome和Safari,后台变为#FFCCCC,但在Firefox中,控制台出错。

"Stylesheet could not be loaded." Expected color but found '\#FFCCCC'.  Error in parsing value for 'background'.  Declaration dropped.

示例代码:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <style>
    body {
        background:\000023FFCCCC;
        font-family:Arial;
        font-size:15px;
    }
    </style>
</head>
<body>
    <p>Test</p>
</body>
</html>

出于好奇,我已经开始在这里提出与Mozilla的错误 - https://bugzilla.mozilla.org/show_bug.cgi?id=1172570

我也怀疑它可能是@charset的一个问题,但也无法让它发挥作用。直到mozilla的人回来,如果你找到解决方法,请回帖。

答案 1 :(得分:-1)

这条评论不是&#34;修复&#34;,但它揭示了这个问题。

除非我弄错了,否则这个问题似乎只会影响通过标准http加载的网站,而不会影响通过https安全加载的网站。换句话说,Firefox将识别转义值......但仅当网站通过https加载而不是http。

http://domain可能无法正常加载,但https://domain会。