Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Php 什么';限制IP地址的最佳方法是什么?_Php_.htaccess - Fatal编程技术网

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

Php 什么';限制IP地址的最佳方法是什么?,php,.htaccess,Php,.htaccess,假设我想禁止特定IP地址访问整个域名(+所有包含的子域)。首先,我从以下代码片段开始,将以下行添加到.htaccess文件中: $info = 'Order Deny,Allow Deny from' . IPtoBlock(); if (getIP()){ $htaccess = fopen('.htaccess', 'r+'); fwrite($htaccess, $info); fclose($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');
}

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

在您的
.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

除了这些场景之外,没有人可以访问您的网站。

在月
。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,请查看此处:

最好的ist在它到达Web服务器之前阻止此尝试。这意味着在iptables(防火墙)之类的级别上进行阻止,或者如果您无法做到这一点,并且正在使用负载平衡器,那么就在那里进行阻止。

不要在php级别进行阻止。至少在Web服务器级别这样做。或者更好的是,在防火墙/路由器级别。如果你不想让别人看到你的东西,甚至不要让他们进入前门。我会坚持使用.htaccess。然后,您可以设计一个自定义403页面,其中包含
errordocument403违禁.html
。但是如果你只是想向他们展示一个错误,如果他们危险到可以从整个网站上禁止,也许他们危险到可以在整个网络级别(udp、tcp等)上禁止。这是有道理的,但我并不总是服务器的控制者,我想确保某些页面不公开。某些页面,或者
整个域名(+所有包含的子域)
?如果您要禁止的IP基于列表,并且您只在特定页面上禁止它们,那么您可能想尝试您的PHP技术。这是否意味着.htaccess上的
fwrite()
是个好主意?因为我想让它动态,而不是手动添加IP。看看这里