PHP 及 .htaccess 实现阻挡 ip


如果发现某些 ip 的用户在网站上捣乱,可以将他/她的 ip 封杀,这不但可以停止捣乱行为,也可以减少主机的资源浪费及频宽,以下介绍透过 PHP 及 Apache 的 .htaccess 的实现方法。

PHP
如果要阻挡的 ip 不多,可以直接加上以下一行到程式顶端:

以上程式码很简单,只要检查访客的 ip 是否 192.168.1.101,如果正确则结束程式罢了,但这样的问题是当要阻挡的 ip 数量增多时,需要每次都在以上程式码上加上 ip,要维护很不方便。以下的方法是使用文字档储存了要阻挡的 ip,每一行一笔资料,档案为 ban_ip_list.dat,实现方法如下:

以上第一行是从 ban_ip_list.dat 读入每一行资料,并储存到 $banned 阵列内,然后用 in_array() 检查访客的 ip 如果在阵列内,则印出 “You have been banned.”,并且结束程式。

.htaccess
如果网站不是用 PHP 写成,或者因为页数很多,不想每个 PHP 程式逐一修改的话,可以用 .htaccess,只要在网站的根目录建立一个 .htaccess 档案 (如果已经存在则不用建立),加上以下内容即可:

Order Deny,Allow
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx

这种方法可以限制特定 ip 或网段。

Tags:,

No Responses

  1. Pingback: 通过 Apache 实现用户认证 | Mr.Cpp 02 November 2018

Leave a Reply