2011-12-19 68 views
1

給定一個完全由vanilla J2EE(沒有框架等)編寫的數據庫(MySQL)驅動的webapp,它沒有任何安全方面的嘗試(除了基本的數據庫登錄系統)。你應該採取什麼措施來保護它?保護Tomcat Webapps

關於這方面的任何資源也會很方便。 (我找到了OWASP)。

謝謝!

+1

SQL注入和明文信息不應該是我想到的前兩個。他們分別是OWASP的1號和7號; )鑑於這是一個web應用程序,你顯然想閱讀一些關於CSRF和XSS的內容。什麼是不喜歡關於OWASP? – TacticalCoder

+0

@ user988052沒什麼,這絕對是一個很棒的資源,但我已經找到了。所以有興趣看看還有什麼。 – Reu

回答

1

這似乎是一個加載的問題。

Spring安全框架是我想到的第一件事,但看起來你可能並不傾向於使用任何框架。

如果您想使用一組數據庫表來管理安全性,那麼您可能需要花一些時間來設計一個適合用戶和角色的適當數據模型。

您可能想要創建某種類型的Servlet過濾器來檢查受保護資源是否存在已登錄用戶。如果用戶存在,那麼過濾器將轉發給受保護的資源。如果用戶未通過身份驗證,則過濾器將捕獲目標頁面並將用戶重定向至身份驗證頁面。

其他要考慮的事項:

a)。您可能需要爲傳遞登錄憑證的任何頁面設置ssl。 b)。您可能想要查看一些加密設施來存儲用戶密碼。 c)。因爲您正在編寫Java EE應用程序,所以您可能希望考慮管理用戶原則。

d)。如果您正在部署到分佈式環境,您將如何處理會話管理。換句話說,這些會議應該是粘性的嗎?或者是否會爲授權用戶使用某種共享內存空間(即WebSessions,Database persistance等)

e)。特別注意sql注入攻擊;如果您正在使用jdbc預處理語句,那麼這並不是什麼大問題。 f)。如果您正在處理信用卡交易,則需要確保您符合PCI標準

g)。謹防惡意機器人,儘可能限制機器人活動。這通常可以通過採用某種驗證碼實用程序來完成,其中該驗證程序使用

h)。如果您使用任何第三方工具/框架是確保你總是使用最新版本的更新,以避免漏洞

這裏有一些資源浮現在腦海中:

http://static.springsource.org/spring-security/site/

http://docs.oracle.com/javase/1.4.2/docs/guide/security/jce/JCERefGuide.html

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html

http://docs.oracle.com/javaee/5/tutorial/doc/bnbwk.html

希望這會有所幫助

+0

對不起,這不是很清楚,我的意思是更多地防止可能的攻擊媒介,而不是寫一個安全的登錄系統,但資源和考慮的事情看起來非常有用!非常感謝。 – Reu

+1

@Roy Kachouh:這不是一個加載的問題:僅僅是因爲Java開發人員不使用框架並不意味着加載問題...... *「您可能需要爲通過登錄憑據的任何頁面設置SSH」 *:您正在考慮HTTPS(使用TLS/SSL),而不是SSH; ) – TacticalCoder

+0

@ user988052是的,你是對的......我的意思是ssl,糾正它:)而且這個加載的評論與他沒有使用任何框架的事實沒有任何關係。加載的評論是基於這樣一個事實,一般而言,安全是一個廣泛的話題,包含幾個不同的方面。 –

2

您的要求非常抽象:您已經提到了OWASP,它一般會處理Web應用程序的安全性。一些在Web應用程序中最常見的攻擊下

  1. 跨站腳本(XSS)
  2. SQL注入
  3. 沒有足夠的傳輸層安全(不使用HTTPS)
  4. 蠻力破解(無限制登錄嘗試次數,未使用captcha
  5. 拒絕服務攻擊。

還有很多,但這些是最常見的。 OWASP解決了其中大部分問題。現在,爲了保護您的Web應用程序免受這些攻擊,請通過理論部分(谷歌相同),然後看看OWASP是否有一些解決方法,如果沒有,有很多開源/免費代碼可用於此。例如,對於使用驗證碼,Google提供free captcha service等。