2013-02-20 128 views
5

作爲一名Java開發人員,我將參與一個Web項目。所以我試圖瞭解網絡安全的不同方面。DoS攻擊開發人員或系統管理員問題

現在我已經到了DoS攻擊主題,我試圖弄清楚我可以/應該做什麼作爲Java開發人員。或者可能是系統管理員的工作。

我首先想到的是以某種方式實現功能,以便單個請求不會花費太多時間和資源。例如對處理的數據量進行一些限制。但我不確定這是否適用於所有情況。

由於許多請求,我是否應該照顧DoS?

任何意見將不勝感激。 非常感謝提前!

回答

3

DoS攻擊通常是IT的關注點。如果你正在開發一個Web應用程序,通常它在一個前端控制器(apache,nginx等)後面,將請求轉發給你的應用程序容器(Tomcat,Rails等)。前端控制器通常/總是邏輯來處理這個問題

如果您是應用程序開發人員,然後集中在跨站腳本攻擊(http://en.wikipedia.org/wiki/Cross-site_scripting),因爲這是完全的應用程序開發者responsabilities內

2

我會說,主要是系統管理員的關心,但這並不意味着開發人員不應該採取措施來避免它。

由於DoS攻擊通常是約沼澤化系統來與請求,以便它不能處理真正的請求(拒絕服務),wikipedia有這樣說的DoS防護:

防護,抵禦拒絕服務攻擊通常涉及使用攻擊檢測,流量分類和響應工具的組合,旨在阻止他們認定爲非法的流量,並允許他們認爲合法的流量。

在我看來,這是系統管理員的任務,因爲他們是誰,應配置防火牆,路由器,交換機等的那些

4

首先,沒有什麼任何的你可以做,以防止DoS攻擊。

所有你能做的就是讓你的代碼變得敏感(開發者),並且你的架構健壯(SysAdmin)。這是一個共同的努力。

無論如何,開發人員應儘量減少資源使用情況 - 不僅僅是針對DoS攻擊。

開發人員應該使用緩存來保護數據庫。無論如何,如果每個請求都需要查詢一個國家列表,那麼每次從數據庫請求該列表並不是好的做法。

開發人員應確保不良請求儘快失敗。例如。在您確認他們的帳號實際存在之前,請不要查看「國家/地區」列表。

開發人員應採用像REST這樣的方法:分別對待每個請求,而不是將內容保留在內存中。這可以在攻擊期間阻止你的內存使用。你不需要內存問題,以及你的網絡被淹沒!

開發人員應該使他們的應用程序可擴展。再說一次,REST可以幫助您,因爲您不需要將內容存儲在內存中。如果您可以一次運行10個應用程序實例,每個實例處理一部分請求,您將在DoS攻擊中持續很長時間(並且可能爲您的用戶提供更流暢的網站體驗)。

SysAdmins應該提供負載均衡,故障轉移等框架來管理這種可伸縮性。他們還將管理這些實例的硬件。您也可以選擇根據需要自動添加更多實例,這意味着自動創建和部署服務器變得非常重要。使用虛擬機而不是物理盒子可以幫助解決這個問題。

系統管理員可以設置防火牆和代理服務器,這樣當攻擊發生時,他們可以保持您的真實流量通過並阻止攻擊流量。他們可以通過疑似IP範圍過濾流量,阻止「可疑流量」請求,將流量級別限制爲流暢流量等。

總的來說,您可以將DoS視爲「高流量」。如果您的應用程序代碼和體系結構無法應對來自「常規用戶」的流量增長,那麼無論如何,無論DoS攻擊如何,您都註定要失敗。當Facebook受到DoS威脅時,我記得有人指出「每天都是對Facebook的DDoS攻擊......」。但它的開發和構造方式應對。