2011-06-19 36 views
5

如果我在呈現HTTP響應時引入Thread.Sleep(x)延遲,其中x將根據來自給定IP的請求速率而改變:請求速率較低時爲零,如果請求一個接一個地逐漸增加,則逐漸增加。DDOS攻擊:使用Thread.Sleep()進行防禦?

這是一個可行的解決方案,以防止DDOS?

有什麼不足之處?

+0

這是否真的能夠抵禦DDoS,還是隻是減少在您的服務器上創建DDoS所需的連接數?另外,是不是設計你的服務器時,在繁忙的交通中出現一些內置的弱點時,響應速度會更慢? – Caleb

+0

這個想法是根據請求速率調整產生'x'的函數,這樣就可以輕鬆地讓定期請求通過,而過度的重複性會導致延遲。所以它不應該是一個弱點。正如其他人所提到的,弱點是請求的分佈式性質。 – Andy

+0

嗯,是的,就是這一點。如果有人在Slashdot上發佈了一個鏈接到其中一個頁面的鏈接,那麼您的服務器在設計上就會變慢。這不是一個真正的DDoS(或者它可能是),但是你將無法區分它。 – Caleb

回答

0

不.DDoS是一種攻擊,它使用大量受感染的機器攻擊目標。這將防止像DoSes這樣的小型攻擊,但不能防止分佈式攻擊。通常情況下,您的Web服務器會在發生任何影響之前崩潰。

我會推薦一個DDoS防護服務或主機,如果你有很多問題與他們。

2

它絕對不會阻止DDOS,因爲在您的應用程序面前的網絡設備可能仍然不堪重負。

此外,「分佈式拒絕服務」的分佈式性質意味着您將從許多不同的IP獲取過多流量,而不是一個。

但無論如何,您在應用程序中所做的事情都無法解決您的應用程序面臨的任何問題,從而不堪重負。

7

不,它不能防止DDOS攻擊。它可以保護CPU免受過載,但它在睡眠時仍然佔用線程,因此攻擊者可以輕鬆佔用Web服務器中所有分配的線程,使其無法響應。它實際上使得執行DDOS攻擊變得更容易。

睡眠可以用來通過減少每秒可以完成的嘗試次數來防止強力的源攻擊。 (當然,它的缺點是它使DDOS攻擊更具感染力。)

+0

+1,因爲耗盡資源是DDoS攻擊的關鍵。 CPU,內存,線程,連接,帶寬 - 任何有限的資源。 –

2

線程睡眠僅用於幫助防範加密攻擊。您可以使用它們來防範:

  • 攻擊者使用不同挑戰字符串的執行時間來確定實現中的邏輯。如果你確保所有響應採取同樣的時間,那麼他們不能使用該信息來確定你的算法如何工作
  • 增加執行時間在重複失敗密碼嘗試,以避免暴力攻擊

除了這些使用,線程睡眠在安全性上沒有太多應用。它們綁定資源(連接或會話狀態),因此防範DoS攻擊毫無價值。

0

DDoS攻擊不能被代碼保護,更多的則是保護你的服務器,通常DDoS攻擊傷害你的負載均衡和防火牆如果你有一些,如果不是DDoS攻擊會傷害你的服務器。

DDoS攻擊可以通過多層次進行:UPD/TCP/HTTP等..

,以保護自己免受DDoS攻擊的最佳方法是使用反向代理,所以如果你去你的網站,它不會顯示真實的知識產權,我們現在可以免費使用Cloud Flare。https://www.cloudflare.com/

我寫了一篇關於Cloud Flare如何保護您的小文章,因爲我使用它們已經一年了,而且它們是迄今爲止最好且最便宜的。

http://www.yourwwwdesign.com/2012/07/23/best-practice-to-protect-your-site-from-ddos-for-free/

希望這有助於!如果您需要更多幫助,請不要猶豫與我聯繫。