2011-06-13 75 views
3

Java中是否有一個用於清理CSS樣式表的好庫?我們希望允許管理員用戶上傳CSS樣式表來控制他們管理的網站部分的外觀。當然,我們不希望對背景進行allox XSS攻擊:url(javascript :),所以我們正在尋找一個很好的衛生處理解決方案。使用Java對CSS進行淨化處理

到目前爲止,我發現的唯一一件事就是使用Google Caja CssTree parser從CSS中排除危險標籤。我最終可能會用到這樣的東西,但是如果有人知道一個庫,我不需要爲這些依賴關係提取和提取,這將是有益的。

解決方案:使用AntiSamy庫像維尼特·雷諾茲建議

 Policy policy = Policy.getInstance("antisamy.xml"); 
     ResourceBundle messages = ResourceBundle.getBundle("AntiSamy", Locale.getDefault()); 

     CssScanner scanner = new CssScanner(policy, messages); 
     CleanResults results = scanner.scanStyleSheet(stylesheet, Integer.MAX_VALUE); 

回答

3

OWASP AntiSamy可以執行CSS樣式表驗證;但我沒有特別嘗試過這個功能。另外,我不確定它是否適合作爲具有太多依賴項目的項目。它依靠Apache Batik內部執行樣式表的解析。

如果我是安全意識的話,我不會因爲下游的依賴而煩惱;我會選擇適當的工具來完成這項任務。

+0

哇 - 非常感謝這一點 - 我可能會使用它的HTML以及。是什麼讓它變得特別的是它實際上有錯誤信息,所以我可以拒絕人們並告訴他們爲什麼。 – 2011-06-14 19:34:09

+0

@Ransom,很高興知道它會滿足您的需求。但是,請仔細閱讀GoogleCode上的問題頁面。 – 2011-06-15 06:01:43

0

Java的內置StyleSheetCSS類爲解析樣式表,並允許你與他們進行互動(刪除某些屬性,執行某些屬性等支持)。我不知道他們是完全更新和模型中的每個可用的屬性,但它的東西值得研究的(少了一個庫船!)

0

OWASP Top Ten代表了對最嚴重的Web應用程序安全缺陷是什麼以及防禦它們的最佳實踐的廣泛共識。它建議使用OWASP's ESAPI Project來構建針對XSS的防禦。這個ESAPI項目創建了一個編碼庫,該庫包含Java,.NET,PHP,Classic ASP,Cold Fusion,Python和Haskell等多種語言。它有編碼上下文不可信數據,你正在處理工具:

encodeForHTML 
encodeForHTMLAttribute 
encodeForJavaScript 
encodeForCSS 
encodeForURL 

它也有其驗證的背景下,輸入屬於一個驗證:

boolean isValidURL = ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false);

一些組織使用ESAPI包括美國運通,Apache基金會,博思艾倫漢密爾頓,Aspect安全,Foundstone(McAfee),哈特福德,無限校園,洛克希德馬丁,MITRE,美國海軍 - SPAWAR,世界銀行,SANS研究所。

我還建議給他們的XSS Prevention Cheat Sheet一個閱讀,其中描述了建立防禦XSS的最佳實踐(它主要歸結爲,你必須使用HTML文檔的不可信數據部分的轉義語法)。

相關問題