2013-03-06 94 views
2

我在一個Java Web應用程序,是多年的老工作。如何解決地方性XSS漏洞在Java Web應用

即使在不需要時,JSP中的大部分<bean:write>都有filter="false",可能是因爲開發人員盲目複製現有代碼。 <bean:write>是用於輸出JSP變量的Struts標記,並且指定filter="false"時,它不會執行HTML轉義(因此filter="false"類似於<c:out>屬性escapeXml="false")。這意味着該應用程序容易受到XSS攻擊,因爲其中一些<bean:write filter="false">正在輸出用戶輸入。

filter="false"的全面刪除不是一種選擇,因爲在某些情況下,應用程序允許用戶使用TinyMCE文本區域輸入HTML,所以我們確實需要在某些情況下輸出原始HTML以保留用戶輸入的格式(儘管我們仍然應該清理用戶輸入的HTML以刪除腳本)。

有成千上萬的filter="false" S IN的代碼,以便每個人的審計工作起來是否需要的時間太長。

我們想要做的是製作我們自己版本的bean:write標籤,比如secure:write,並且執行bean的全局查找/替換:在我們的JSP中使用secure:write編寫。當指定filter="false"時,secure:write將從輸出中去除腳本。在這種變化之後,用戶仍然能夠將格式化HTML輸出到他們不應該真正能夠的地方,但是隻要XSS漏洞得到修復,我們暫時不擔心這一點。

我們想用庫來實現secure:write標籤中的腳本剝離,我們一直在尋找https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Projecthttps://code.google.com/p/owasp-java-html-sanitizer/。這兩個看起來像他們能夠清理HTML,雖然AntiSamy看起來是打算用來消毒的方式HTML到應用程序,而不是在路上了,而且由於數據輸出往往比它輸入我們擔心通過它運行我們所有的secure:write輸出可能會很慢。

我有2個主要問題:

1)將我們提出的辦法努力解決造成filter="false"的XSS漏洞?

2)顯示內容的時候,任何人都可以推薦一個庫用於HTML禁制也就是說,它是速度不夠快,沒有顯著影響頁面渲染性能?有沒有人使用AntiSamy或owasp-java-html-sanitizer來做類似的事情?

回答

0

1)我們提出的方法是否可以解決由filter =「false」導致的XSS漏洞?

這絕對聽起來像是一種改善,會減少你的攻擊面,但這還不夠。 一旦攻擊者可以不再注入<script>doEvil()</script>那麼他們將專注於注射javascript:doEvil()其中URL是預期的,所以你需要硬化,其中的URL注入以及地方。

如果您使用的是XSS掃描儀,我會做你的描述,然後重新運行您的掃描儀,確保它會檢測注入的JavaScript的URL。

一旦URL被鎖定,您應該審計任何寫入樣式屬性或元素和事件處理程序屬性的操作。

2)任何人都可以在顯示內容時推薦一個用於HTML衛生處理的庫,即它的速度足夠快而不會顯着影響頁面呈現性能嗎?有沒有人使用AntiSamy或owasp-java-html-sanitizer來做類似的事情?

無恥插頭:https://code.google.com/p/owasp-java-html-sanitizer/

的便捷配置HTML消毒劑用Java編寫的,它可以讓你包括HTML,同時防止XSS在Web應用程序由第三方撰寫。

+0

我們已經爲owasp-java-html-sanitizer :-)留下了深刻的印象 - 開發benchamrk和make runtests工作時不需要我配置任何設置!我們使用基於eBay的政策,因爲我們希望允許大多數HTML通過。 感謝您對其他潛在漏洞的建議。 – frankoid 2013-03-27 16:11:44

+0

@frankoid,我很高興你喜歡它。順便提一句,[html-contextual-autoescaper-java](https://github.com/mikesamuel/html-contextual-autoescaper-java)旨在進行上下文推理和消毒劑採摘。它正在[Google Apps腳本](https://developers.google.com/apps-script/html_service#scriptlets-printing)中生效,並且我有一個集成了Jasper的黑客版本,但它不是一個下拉菜單,尚未替代JSP。 – 2013-03-27 18:20:34