欢迎各位兄弟 发布技术文章
这里的技术是共享的
在需要的目录下建立一个 .htaccess 文件并在里面写上
<FilesMatch ".(php|asp|jsp|js)$">
Deny from all
</FilesMatch>
在需要的目录下建立一个 .htaccess 文件并在里面写上一行
php_flag engine off
用.htaccess文件可以解决上面提出的问题。你可以在任何许可权限较为宽松(如760,766,775以及777)的目录中添加.htaccess文件,也可以阻止某个目录和它所有子目录中的脚本执行,还可以禁止某一类型文件外的其它所有文件的写入。
以下代码段可禁止在目录中使用.jpeg, .jpg, .png. 以及 .gif文件外所有文件:
<Files ^(*.jpeg|*.jpg|*.png|*.gif)> order deny,allow deny from all </Files>
下面这个代码示例用<FilesMatch>指令来指定能够被访问的文件类型。将“Allow”改为“Deny”可以拒绝所有访问。
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$"> Allow from All </FilesMatch>
浏览器发送请求时,使用以下代码可以禁止执行.pl, .cgi 或者 .php等可执行脚本。通过以下代码,Web浏览器将这些可执行文件当作文本文件来处理。这些文件会在浏览器窗口中以普通文本形式显示出来。
AddType text/plain .pl .cgi .php
Options -ExecCGI指令是.htaccess文件中一个作用较广泛的指令。该指令决定.htaccess文件中哪些内容是其它Apache模块所允许的。 -ExecCGI规定,如果文件被记录由 cgi-script处理器进行处理,该文件将不允许出现。 第二行中的AddHandler指令列举了cig-scripts的所有文件扩展名,所有尝试获取这些文件的请求都会被返回403错误——访问被拒绝。
Options -ExecCGI AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
最后你还可以使用一个指令来命令文件类型(非处理器)。该指令删除所有与扩展名相关的处理器和动作,然后以文本/普通形式使用文件,但该指令不会改写之前的示例范围。
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$"> ForceType text/plain </FilesMatch>
在下面的代码中,我们利用AddHandler和 Action指令来为Apache设置REDIRECT_STATUS环境变量。这样做的原因是,.php文件请求被发送时,Apache不仅要处理该文 件,还要将文件转换为/cgi-bin/php.cgi脚本。执行转换操作的可以是一个真正的php-cgi解析器,也可以仅仅是一个可执行php解析器 的shell脚本。
AddHandler php-cgi .php Action php-cgi /cgi-bin/php.cgi
下面的代码建立了一个环境变量PHPRC,然后执行php.cgi文件。
#!/bin/sh export PHP_FCGI_CHILDREN=3 export PHPRC=/home/custom-ini exec /home/bin/php.cgi
下面的代码所执行的php解析器(如果解析器存在)位于执行脚本的当前路径中:
#!/bin/sh exec php
你可以用它来锁定htaccess目录和文件,甚至可以锁定带有REDIRECT_STATUS环境变量的请求。这是因为REDIRECT_cgi环境变 量只赋值给本地请求。注意,请求/cgi-bin/php.cgi 文件的是Apache,因此请求才会被定义为本地请求。如果访问的页面以.php结尾,REDIRECT_变量将在apache把它的控制权转交给 /cgi-bin/php.cgi文件时赋值给给apache。因此,如果/cgi-bin/php.cgi文件不具有REDIRECT_STATUS变 量赋值,你可以锁定所有对/cgi-bin/php.cgi文件的请求。
REDIRECT_STATUS变量起源于内部请求,该变量最初(REDIRECT_STATUS变量的历史甚至早于php)被用于处理ErrorDocument(错误文件)。ErrorDocument一般由用户行为触发,例如,用户请求的页面不存在会导致404错误页面, 但之后将用户的请求重定向到ErrorDocument的则是Apache,这类似于为.php文件重定向。ErrorDocument的这一特征使它能 够从导致错误的请求中意识到环境设置和环境变量的存在。REDIRECT_STATUS只是REDIRECT_众多变量中的一个,几乎所有传递到重定向脚 本的安全变量都以REDIRECT_为前缀。
现在我们只需要具有REDIRECT_STATUS环境变量赋值的请求,那么我们就可以将其它请求定向到403禁止访问页面。要达到这一效果,请把下列代码添加到/cgi-bin/.htaccess文件中:
Order Deny,Allow Deny from All Allow from env=REDIRECT_STATUS
以下代码可进入/.htaccess文件并将不可变的正则表达式应用于php[0-9].(ini|cgi)</tt>
<FilesMatch "^php5?\.(ini|cgi)$"> Order Deny,Allow Deny from All Allow from env=REDIRECT_STATUS </FilesMatch>
我们也可以用mod_rewrite进一步限制访问,只要用200状态码进行重定向就可以了。如果默认ErrorDocument的php脚本是其本身,重定向就完成了。类似于
ErrorDocument 403 /error.php
这样的代码,其REDIRECT_STATUS为403。
RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} !=200 RewriteRule /cgi-bin/path/to/php - [F]
httpd.ini & .htaccess 文件保护禁止执行php、asp文件 | |||||||||
作者:闵涛 文章来源:闵涛的学习笔记 点击数:339 更新时间:2012-10-4 17:51:33 | |||||||||
首先,在域名根目录(不全是网站根目录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,代码如下:
如果你的是IIS服务器安装了Rewrite模块,并开通了自定义httpd.ini权限,向域名根目录写入文件 httpd.ini ,代码如下:
备注:规则仅为 RewriteRule ^(.*/template/.*)$ /safe.php\?$1 一行。 如果你的服务器为Apache服务器灵通了.htaccess权限,向域名根目录写入文件 .htaccess ,代码如下:
如果要保护根目录下的 safe 目录,规则如下: httpd.ini:
如果要同时保护所有目录名为template的目录以及根目录下的 safe目录和bbs目录下的admin、require目录,规则如下: httpd.ini:
如果要禁止目录名为 attachment 的目录(附件目录)及其子目录禁止执行php、asp等文件,规则如下: httpd.ini:
|