簡體   English   中英

IP禁止 - 最有效的方式?

[英]IP Banning - most efficient way?

我經營一個大型論壇,像其他人一樣有垃圾郵件發送者/機器人的問題。 有大量已知的垃圾郵件IP列表,您可以下載並以htaccess形式使用,但我唯一關心的是文件大小。 所以我認為問題是有多大是太大了,因為它將為每個用戶加載。 添加其中的所有IP可達到約100kb。

有沒有可以減少開銷的替代方案? 可能使用php,或者由於文件大小和檢查ips等導致一些重負載?

任何建議將不勝感激。

謝謝,

史蒂夫

通常比IP禁令更有效。 例如,僅填寫表單中的隱藏字段將填寫,或者需要javascript或cookie來提交表單。

對於IP禁止,我不會使用.htaccess文件。 根據您的Web服務器,它可能會讀取每個請求的htaccess文件。 我肯定會將IP-bans添加到您的webservers vhost配置中。 這樣我就可以確定網絡服務器會將它保存在RAM中而不是一次又一次地讀取它。

通過PHP完成它也是一種選擇。 這樣,您也可以輕松地將禁令限制為表單,例如在論壇中注冊。

有幾個選擇:

  • 您可以將阻止列表存儲到數據庫中。 在那里查詢比在PHP中使用循環更有效。
  • 您可以使用array_map(ip2long())預處理列表以節省內存和可能的查找時間。
  • 您可以將IP列表打包成正則表達式,也可以通過優化器(Perl Regexp :: Optimizer)運行它。 PCRE測試再次比foreach和strpos測試更快。 $regex = implode("|", array_map("preg_quote", file("ip.txt")));

但是,IP阻止列表通常不太可靠。 也許你應該實現另外兩個解決方法:隱藏表單字段來檢測啞巴機器人。 或者用於阻止非人類的驗證碼(不是非常用戶友好,但解決了問題)。

在DocumentRoot中的.htaccess中,之后:

Order Deny,Allow

附加一行:

Deny from <black ip>

好吧,你正在建立一個地址數據庫 ,對嗎? 使用數據庫產品不是很有用嗎? 如果你還沒有,SQLite可以勝任這項任務。

也許你想以優秀的方式阻止垃圾郵件 - Captcha

我相信阿爾伯特愛因斯坦先生曾經說過:問題無法在創造它們的同一意識水平上解決:)

除非您的服務器上的負載已經存在問題,否則您可能不會注意到與100K .htaccess文件的區別。 可能有更快的替代方案,可能包括使用iptables或使用排序的ip列表,可以更快地搜索匹配,甚至使用數據庫(盡管單個數據庫查詢的開銷可能會破壞索引表的好處) )但除非你運行一個高負荷的論壇,否則它可能不值得。

您也可以嘗試使用驗證碼或類似的。 這個方向的一切都需要付出代價,沒有什么是100%可靠的。

不要使用此類IP列表。 他們可能會過時,你可能會阻止錯誤的請求。 如果他們真的在進行某種拒絕服務攻擊,只需投資優質或更好的驗證碼,並且不時只阻止IP。

為什么強制Web服務器處理阻塞用戶? 我建議使用空路由(因為如果阻塞的IP條目數量增加,使用iptables會降低服務器速度)。

閱讀http://www.cyberciti.biz/tips/how-do-i-drop-or-block-attackers-ip-with-null-routes.html

http://php.net/manual/en/function.shell-exec.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM