2017-01-10 26 views

回答

2

東西,我這個做的是,我一直日誌使用基於IP地址和/或用戶名試圖登錄事件訂閱。然後,如果時間X量後的IP /用戶試圖登錄如果發生故障,我將該IP地址/用戶移動到禁止列表中。此後,IP /用戶嘗試登錄時,我立即根據該禁止列表拒絕該IP地址/用戶。

可以隨着時間的嘗試和所有那些好吃的東西之間也起事件訂閱內

讓我知道如果這是有道理的。

+0

感謝本傑明,我希望的是與所有這些東西開箱即用的包。不管怎麼說,還是要謝謝你! – user1029829

0

老實說,我做我的網站/緩存服務器,當我需要。我最近使用varnish緩存來做一個名爲vsthrottle的插件。 (這可能是您可以在服務器級別使用的許多方法之一)在webserver級別而不是symfony級別執行此操作的優勢在於,您甚至沒有達到php級別,並且編譯所有供應商只是爲了最終拒絕請求,而且你沒有使用單獨的數據存儲(不管是mysql還是像memcached那樣快速的)來記錄每個請求並在下一個請求中進行比較......如果請求到達php層,那麼它已經花費了一些性能,並且即使你從symfony返回一個拒絕,這種類型的DDOS仍會傷害你,因爲它會導致服務器編譯php和symfony代碼的一部分。

如果你堅持在symfony中這樣做,註冊一個偵聽器來偵聽所有請求,解析IP地址或X_forwarded_for的請求頭(如果你在負載均衡器後面,這種情況下只有負載均衡器ip會保留用常規的ip檢查來顯示),然後找到一種合適的方式來跟蹤所有請求(最多可以使用一個分鐘)(您可以使用memcached進行快速存儲,並且可以通過智能方法爲每個ips增加計數),並且如果ip命中了您超過最後1分鐘可以說100次,你會返回一個禁止響應或太多的請求響應,而不是通常的響應......但我不建議這樣做,因爲通常構建的解決方案(比如我使用的清漆)更好,在我的情況下,我可以扼殺特定的路線,而不是其他例如。