2015-06-04 59 views
2

根據OWASP的建議,來自不受信任源的CSS值應該被轉義。無法在Firefox中使用編碼/轉義的CSS值

在試圖遵循這些建議我使用微軟的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的缺點,那麼最好的解決方法是什麼?

回答

0

我做了一個快速POC,一開始它確實看起來像一個Firefox中的錯誤。爲了簡單起見,這裏是我使用的代碼,並嘗試在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

不幸的是,我們一直沒有找到解決辦法,唯一的選擇是放棄OWASP的建議。從閱讀您的Mozilla錯誤報告,看起來Mozilla不認爲這是他們的瀏覽器的問題。 –

-1

這個評論不是一個「修復」,但它對這個問題有一定的瞭解。

除非我誤解了,否則此問題似乎只會影響通過標準http加載的網站,而不會通過https安全加載網站。換句話說,Firefox會識別轉義值......但只有當通過https加載站點而不是http時。

http://domain可能無法正常加載,但https://domain會。