阻止用户IP';是用.htaccess还是用PHP?
从性能角度来看,哪种方法是阻止30个IP地址的最佳方法 A) .htaccess文件 或阻止用户IP';是用.htaccess还是用PHP?,php,.htaccess,Php,.htaccess,从性能角度来看,哪种方法是阻止30个IP地址的最佳方法 A) .htaccess文件 或 B) 文件中的PHP代码如果您是服务器的管理员,我将不使用这些代码,并且将在防火墙级别禁止IP——这样一来,Apache和Apache+PHP都不必工作 如果你不是管理员;嗯,.htaccess意味着只有Apache,没有PHP可以加载/编译/执行;我猜单独使用Apache(即.htaccess)应该比Apache+PHP需要更少的资源 另一种方法是维护:如果您需要从列表中添加/删除IP地址,最简单的方法
B) 文件中的PHP代码如果您是服务器的管理员,我将不使用这些代码,并且将在防火墙级别禁止IP——这样一来,Apache和Apache+PHP都不必工作 如果你不是管理员;嗯,
.htaccess
意味着只有Apache,没有PHP可以加载/编译/执行;我猜单独使用Apache(即.htaccess
)应该比Apache+PHP需要更少的资源
另一种方法是维护:如果您需要从列表中添加/删除IP地址,最简单的方法是什么?
(在这种情况下,我通常会打赌一些PHP代码…我同意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
仅供记录。为什么不在硬件级别(路由器、负载平衡器、防火墙等)阻止它们如果它只有30个块,并且您不需要经常更新它们。
Hardware
或
Hardware+OS
或
Hardware+OS+Apache
或
Hardware+OS+Apache+PHP
了解堆栈应该有助于指出哪一个最快。这是最好的选择。尽管如此,我还是将PHP和.htaccess结合使用,因为它们更易于维护,并且我能够使用它们自动添加新的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]
但我使用此功能的主要原因是允许意外被阻止的访问者访问。谢谢,我很好奇,是否有可能编写一个PHP脚本来添加/删除服务器防火墙级别被阻止的IP?我想这是可能的——前提是运行PHP脚本的用户拥有执行此类操作所需的权限;;而且不确定运行Apache的用户是否有这种能力。。。(我必须承认我从来没有尝试过,事实上)是的,我现在使用类似的东西,但我正在考虑在PHP之前在服务器级别这样做,希望-如果使用PHP,我也会检查X_HTTP_FORWARDED_的头。是的,可能会有一点更多的处理,但基本元素在那里。我会详细研究这一点,现在考虑所有选项