2010-03-09 95 views
4

我正在開發一個Web應用程序,並面臨一些安全問題。Java網站保護解決方案(特別是XSS)

在我的應用程序中,用戶可以發送消息並查看其他消息(像公告板一樣)。我正在驗證用戶可以發送給我的應用的所有表單域。

有一些非常簡單的字段,比如「暱稱」,可以是6-10個字母字符,也可以是消息發送時間,它會以字符串的形式發送給用戶,然後(當用戶請求消息時,比日期更「年輕」或「更老」)我用SimpleDateFormat解析這個(我正在用java開發,但我的問題不僅與java有關)。

最大的問題是消息字段。我不能將它限制爲只有字母字符(大寫或小寫),因爲我必須處理一些經常使用諸如「,',/,{,}等字符......(如果系統沒有使用,用戶不會滿意不允許他們使用這些東西)

根據這http://ha.ckers.org/xss.html,有很多方法可以「破解」我的網站,但我想知道,有什麼辦法可以阻止它嗎?所有,因爲沒有100%的保護,但我想要一個可以保護我的網站的解決方案

我在服務器端使用servlet,在客戶端使用jQuery。 「AJAX,所以用戶打開1個JSP,然後所有的數據通過jQuery使用JSON進行下載和渲染(是的,我知道它不是」users-without-javascript「友好的,但它是2010年,對吧?:-) ) 我知道前端驗證是不夠的。我想使用3層驗證: - 1.前端,javascript驗證數據,然後發送到服務器 - 2.服務器端,相同的驗證,如果有什麼,不應該在那裏(因爲客戶端的JavaScript),我禁止用戶 - 3.如果有什麼我以前無法捕捉的,渲染過程處理和適當渲染

是否有任何「開箱即用」的解決方案,特別是對於Java?或者我可以使用其他解決方案?

+0

你可以在這裏找到你需要的所有信息http://www.owasp.org/index.php/Cross-site_Scripting_(XSS) – 2010-03-10 00:38:21

回答

-1

最簡單的方法是做一個簡單的替換下面的 <與& lt;
>與& gt;
'與'

這將解決大多數數據庫漏洞。

+2

如果真的那麼簡單...... – DanSingerman 2010-03-09 23:08:21

2

爲了最大限度地減少XSS攻擊,重要的是在將任何字段數據放回頁面之前進行編碼。像更改>到>等等。這不會允許任何惡意代碼在添加到頁面時執行。

我認爲你正在做很多正確的事情,白名單列出你期望的不同領域的數據。除了那些可以允許其他字符可能有問題的字段的編碼將爲您解決問題。

另外,由於您使用的Ajax它爲您提供一些保護,因爲人們無法在URL參數等

1

看那AntiSamy覆蓋庫中值。它允許您爲應用程序定義規則集,然後通過AntiSamy運行您的用戶輸入以按照您的規則進行清理。