如果发现某些 ip 的用户在网站上捣乱,可以将他/她的 ip 封杀,这不但可以停止捣乱行为,也可以减少主机的资源浪费及频宽,以下介绍透过 PHP 及 Apache 的 .htaccess 的实现方法。
PHP
如果要阻挡的 ip 不多,可以直接加上以下一行到程式顶端:
|
1 2 3 4 5 |
<?php if($_SERVER['REMOTE_ADDR'] == "192.168.1.101"){ exit(); } ?> |
以上程式码很简单,只要检查访客的 ip 是否 192.168.1.101,如果正确则结束程式罢了,但这样的问题是当要阻挡的 ip 数量增多时,需要每次都在以上程式码上加上 ip,要维护很不方便。以下的方法是使用文字档储存了要阻挡的 ip,每一行一笔资料,档案为 ban_ip_list.dat,实现方法如下:
|
1 2 3 4 5 6 7 |
<?php $banned = file("ban_ip_list.dat"); if(in_array($_SERVER['REMOTE_ADDR'], $banned)){ echo "You have been banned."; exit(); } ?> |
以上第一行是从 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 或网段。
No Responses