从仅限性能的视图来看,这将是阻止30个IP地址的最佳方式吗?
A).htaccess文件
或
B)文件中的PHP代码
答案 0 :(得分:9)
如果您是服务器的管理员,我将不会使用这些服务器,并且会在防火墙级别禁用IP - 这样,Apache和Apache + PHP都不会起作用。
如果你不是管理员;好吧,.htaccess
只表示Apache,没有PHP加载/编译/执行;我猜单独的Apache (即.htaccess
)应该比Apache + PHP需要更少的资源。
另一种看待事物的方法是维护:如果你需要添加/删除该列表中的IP地址,最简单的方法是什么?
(在这种情况下,我通常会赌一些PHP代码......)
答案 1 :(得分:3)
我同意Pascal的回答。但PHP代码是:
$banned = array('129.168.1.1');
if(in_array($_SERVER['REMOTE_ADDR'], $banned))
{
die();
}
.htaccess是:
order allow,deny
deny from 192.168.1.1
allow from all
仅供记录。
答案 2 :(得分:3)
Hardware
或
Hardware + OS
或
Hardware + OS + Apache
或
Hardware + OS + Apache + PHP
了解堆栈应该有助于指出最快的堆栈。
答案 3 :(得分:1)
为什么不在硬件级别阻止它们(路由器,负载均衡器,防火墙等)? - 如果只有30块,你不需要经常更新它们。
答案 4 :(得分:0)
@MikeB 's answered完美无缺。不过我将PHP和.htaccess结合使用,因为它们更易于维护,并且我能够使用honeypots自动添加新的IP。例如:
的login.php
if ($login_tries > 3) {
touch('deny/' . $_SERVER['REMOT_ADDR']);
}
的.htaccess
# check if ip has been banned
RewriteCond /usr/www/{YOUR_PATH}/deny/%{REMOTE_ADDR} -f
RewriteRule . - [F]
但我使用此功能的主要原因是允许unblock themself through a captcha意外阻止访问者。