Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止用户IP';是用.htaccess还是用PHP?_Php_.htaccess - Fatal编程技术网

阻止用户IP';是用.htaccess还是用PHP?

阻止用户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地址,最简单的方法

从性能角度来看,哪种方法是阻止30个IP地址的最佳方法

A) .htaccess文件


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_的头。是的,可能会有一点更多的处理,但基本元素在那里。我会详细研究这一点,现在考虑所有选项