我经营一个大型论坛,并且像其他人一样都有垃圾邮件发送者/机器人的问题。有大量已知的垃圾邮件IP列表,您可以下载并以htaccess形式使用,但我唯一关心的是文件大小。所以我认为问题是有多大是太大了,因为它将为每个用户加载。添加其中的所有IP大约为100kb。
是否有更少的开销?可能是用php做的,或者由于文件大小和检查ips等导致一些重负载?
非常感谢任何建议。
谢谢,
史蒂夫
答案 0 :(得分:2)
通常比IP禁令更有效。例如,仅填写表单中的隐藏字段将填写,或者需要javascript或cookie来提交表单。
对于IP禁止,我不会使用.htaccess文件。根据您的Web服务器,它可能会读取每个请求的htaccess文件。我肯定会将IP-bans添加到您的webservers vhost配置中。这样我就可以确定网络服务器会将它保存在RAM中,而不是一次又一次地读取它。
通过PHP进行此操作也是一种选择。通过这种方式,您还可以轻松地将禁令限制为表单,例如在论坛中注册。
答案 1 :(得分:1)
有几个选择:
$regex = implode("|", array_map("preg_quote", file("ip.txt")));
但是,IP块列表通常不太可靠。也许你应该实现另外两个解决方法:隐藏表单字段来检测哑巴机器人。或者用于阻止非人类的验证码(不是非常用户友好,但解决了问题)。
答案 2 :(得分:0)
嗯,你正在建立一个数据库的地址,对吗?使用数据库产品不是很有用吗?如果你还没有,那么SQLite可以胜任这项任务。
答案 3 :(得分:0)
也许你想以良好的方式阻止垃圾邮件 - Captcha?
我相信阿尔伯特爱因斯坦先生曾经说过:问题无法在创造它们的同一意识水平上解决:)
答案 4 :(得分:0)
除非您的服务器上的负载已经存在问题,否则您可能不会注意到与100K .htaccess文件的区别。 可能有更快的替代方案,可能包括使用iptables或使用排序的ip列表,可以更快地搜索匹配,甚至使用数据库(尽管单个数据库查询的开销可能会破坏索引表的好处) )但除非你运行一个高负荷的论坛,否则它可能不值得。
您也可以尝试使用验证码或类似的。这方面的一切都是有代价的,没有什么是100%可靠的。
答案 5 :(得分:0)
请勿使用此类IP列表。他们可能会过时,你可能会阻止错误的请求。只需投资优质或更好的验证码,并且只有在他们真正进行某种拒绝服务攻击时才会阻止IP。
答案 6 :(得分:0)
为什么强制网络服务器处理阻止用户?我建议使用空路由(因为如果阻塞的IP条目数量增加,使用iptables会降低服务器速度。)
阅读http://www.cyberciti.biz/tips/how-do-i-drop-or-block-attackers-ip-with-null-routes.html
答案 7 :(得分:0)
在DocumentRoot中的.htaccess中,在:
之后Order Deny,Allow
附加一行:
Deny from <black ip>