使用.htaccess或PHP阻止用户IP?

时间:2010-01-19 00:07:27

标签: php .htaccess

从仅限性能的视图来看,这将是阻止30个IP地址的最佳方式吗?

A).htaccess文件

B)文件中的PHP代码

5 个答案:

答案 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意外阻止访问者。