限制IP地址的最佳方法是什么?

时间:2014-07-17 15:45:55

标签: php .htaccess

假设我想禁止某个特定的IP地址访问整个域名(+所有包含的子域名)。首先,我从以下代码段开始,将以下行添加到.htaccess文件中:

$info = 'Order Deny,Allow
Deny from' . IPtoBlock();

if (getIP()){
    $htaccess = fopen('.htaccess', 'r+');
    fwrite($htaccess, $info);
    fclose($htaccess);
}

但将用户重定向到其他内容更相关吗?毕竟,尽管立即重定向,他仍然能够向服务器发出请求。

$deny = array('192.168.1.0', '192.168.1.1', '192.168.1.2');
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
   header("location: http://www.google.com/");
}

还是简单地杀了这个页面?

$deny = array('192.168.1.0', '192.168.1.1', '192.168.1.2');
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
   die('Access restricted');
}

解决此问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

在jour .htaccess

Order Allow,Deny
Allow from all
Deny from 123.123.123.123

使用ip 123.123.123.123的用户将拥有403。

如果您想重定向到特定页面,请添加:

ErrorDocument 403 /forbidden.php

编辑:要在htaccess中禁止文本文件中的Ip,请查看此处:Ban IPs from text file using htaccess

答案 1 :(得分:0)

.htacces文件中:

Order Deny,Allow
Deny from all
Allow from xx.xx            // This will be your local IP address
Allow from yy.yy.yy.yy      // Your server IP address

除了这些情况,没有人可以访问您的网站。

答案 2 :(得分:0)

最好的方法是在它到达您的网络服务器之前阻止此尝试。这意味着阻塞在像iptables这样的级别上(防火墙;或者如果你不能这样做并使用负载均衡器,那么就阻止它)。