2009-09-11 78 views
2

Castle Project充滿了各種功能,包含了一些非常棒的子項目,並且用它進行開發一直很愉快。如何在NVelocity上處理XSS

我的團隊幾乎準備好提供定製的EAM,我們正在拋光我們的系統。我們嘗試了一些基本的XSS攻擊並猜測:它們都起作用了。

儘管它將在Intranet環境中運行,但我們不希望用戶意外打破整個系統,而且我們正在研究解決方案來處理XSS問題。

NVelocity在默認情況下不會逃避任何東西,所以這段代碼:

${entity.Field} 

與該字段包含喜歡的東西:

<script>alert('xss!')</script> 

會給我們一個很好的XSS警報。

微軟的AntiXSS庫看起來不錯:處理幾種可能的XSS向量,等等。我們遇到了AndyPike的helper,但是這個解決方案會讓我們重構幾千行。是的,不好。這在編輯現有實體時不會處理ActiveRecord/NVelocity自動綁定。

問題是:使用輸出編碼技術,是否有可能/建議修補Castle Project的NVelocity引擎?就像他們對Brail做的一樣?任何人有更好的主意?

謝謝!

PS:Stackoverflowers使用Castle Project會使用這樣的補丁嗎?

+0

只是一個快速注:表單助手確實HtmlEncondig把值插入輸入字段之前。 – wtaniguchi 2009-09-14 18:24:54

回答

1

NVelocity在默認情況下不會逃避任何

哦,親愛的。然後你有很多代碼修復工作。

無法轉義文本被放入HTML並不是一個失敗,你可以糾正後的事實。是的,有些庫會篩選出明顯的錯誤輸入,但它們只是隱藏了問題,而不是很好。鑑於瀏覽器會接受大量奇怪的構造,總會有方法通過它們偷偷弄壞壞HTML,同時他們會給你誤報 - 例如,這篇文章將被禁止討論標籤<script>

他們至多是一個臨時粘貼石膏,直到你可以解決真正的問題。

+0

你是什麼意思,「例如」,你的帖子會被阻止?將它插入HTML時轉義值會給你幾乎與你在SO中一樣的東西。不是嗎? – wtaniguchi 2009-09-12 06:37:37

+0

是的。如果您在將文本添加到HTML中時轉義文本,那麼您的做法是正確的。我的意思是,如果這樣做是錯誤的(就像NVelocity顯然是這樣),然後試圖通過使用其中一個「反XSS」輸入濾波器來覆蓋它,它會產生消極的副作用,例如阻塞或破壞有效的用戶輸入就像我們談論'