打印本文 打印本文 关闭窗口 关闭窗口
httpd.ini & .htaccess 文件保护禁止执行php、asp文件
作者:佚名  文章来源:本站原创  点击数3176  更新时间:2012/10/4 17:51:33  文章录入:mintao  责任编辑:mintao
httpd.ini & .htaccess 文件保护禁止执行php、asp文件 终极应用之文件保护 用 httpd.ini 或 .htaccess 来保护模板,顺便保护一下其他文件,保护启动后,不但无法访问目标文件,还可以自动记录访问时间、用户IP、访问地址、用户信息等信息。
  首先,在域名目录(不全是网站根目录web,是当前域名如:http://www.iwuxue.com/ 对应的目录,如果 http://www.iwuxue.com/bbs/ 子目录绑定了域名 bbs.iwuxue.com ,那么 http://www.iwuxue.com/bbs/ 目录就是 http://bbs.iwuxue.com/ 的域名根目录)建立一个safe子目录(如果不需要记录日志功能,可以不建立,也不写入下一步的文件)用来存放日志。再在域名根目录下建立一个 safe.php,代码如下:
以下是代码片段:
<?php
if(filesize("safe.txt")<10240){
if($_SERVER["HTTP_X_CLUSTER_CLIENT_IP"])$ip=$_SERVER["HTTP_X_CLUSTER_CLIENT_IP"];
elseif($_SERVER["HTTP_CLIENT_IP"])$ip=$_SERVER["HTTP_CLIENT_IP"];
elseif($_SERVER["REMOTE_ADDR"])$ip=$_SERVER["REMOTE_ADDR"];
else $ip="";
@$fp=fopen("safe.txt","a");
@fputs($fp,date("Y-m-d H:i:s",time())."|".$ip."|".$_SERVER['QUERY_STRING']."|".$_SERVER['HTTP_USER_AGENT']."\r\n");
@fclose($fp);
}else rename("safe.txt","safe/".time().".txt");
exit('MJJ,你想做什么?系统已经自动记录你的IP信息,请自觉离开!');
?>
继续在域名根目录下写入httpd.ini 或 .htaccess(这里仅以保护所有目录名为template的目录为例)。
  如果你的是IIS服务器安装了Rewrite模块,并开通了自定义httpd.ini权限,向域名根目录写入文件 httpd.ini ,代码如下:
以下是代码片段:
[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32
RewriteEngine On
RewriteRule ^(.*/template/.*)$ /safe.php\?$1

备注:规则仅为 RewriteRule ^(.*/template/.*)$ /safe.php\?$1 一行。
  如果你的服务器为Apache服务器灵通了.htaccess权限,向域名根目录写入文件 .htaccess ,代码如下:
以下是代码片段:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*/template/.*)$ /safe.php\?/$1
</IfModule>
  备注:规则仅为 RewriteRule ^(.*/template/.*)$ /safe.php\?/$1 一行。
  如果要保护根目录下的 safe 目录,规则如下:
httpd.ini:
以下是代码片段:
RewriteRule ^(/safe/.*)$ /safe.php\?$1
.htaccess
以下是代码片段:
RewriteRule ^(safe/.*)$ /safe.php\?/$1
 备注:从上面这条规则我们注意到,.htaccess 中,中间 safe/.* 前面没有 / ,httpd.ini 有 /,我测试 .htaccess 的时候是在PHPWind Wamp 4.0下测试的。
  如果要同时保护所有目录名为template的目录以及根目录下的 safe目录和bbs目录下的admin、require目录,规则如下:
httpd.ini:
以下是代码片段:
RewriteRule ^(/(?:.*template|safe|bbs\/admin|bbs\/require)/.*)$ /safe.php\?$1
.htaccess
以下是代码片段:
RewriteRule ^((?:.*template|safe|bbs\/admin|bbs\/require)/.*)$ /safe.php\?/$1

  如果要禁止目录名为 attachment 的目录(附件目录)及其子目录禁止执行php、asp等文件,规则如下:
httpd.ini:
以下是代码片段:
RewriteRule ^(/.*attachment/.*(?:\.php|\.asp))$ /safe.php\?$1
.htaccess
以下是代码片段:
RewriteRule ^(.*attachment/.*(?:\.php|\.asp))$ /safe.php\?/$1
  备注:规则可多条,如果使用过伪静态重定向,直接把规则放到伪静态规则上面即可。如果前面没有写入safe.php并建立safe目录,打开受保护的页面会找不到网页或者显示自定义的404页面,如果写入了,访问的时候,就会将相关信息保存到根目录下的safe.txt,当safe.txt超过10K,就改名存放到safe目录。
打印本文 打印本文 关闭窗口 关闭窗口