osharedocs:
你好!
在apache中禁止一个目录执行php脚本的权限
在apache中禁止一个目录执行php脚本的权限
学习 http://www.bccn.net/Article/web/php/jszl/200512/2325.html 比如某些用于保存用户上传文件(头像、签名、帖子图)等的目录,这些目录只是图片和压缩文件等,并不需要php脚本执行权限,为了避免上传漏洞这些目录需要禁止掉php脚本的执行权限,方法如下:
方法一:
<Directory "e:/webroot/test">
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
</Directory>
方法二:php_flag engine off #表示此目录下的PHP文件不被解释执行,限没有PHP权限
当以 Apache 的模块方式运行 PHP 时,也可以通过 Apache 的配置文件(例如 httpd.conf)和 .htaccess 文件中的指令来修改 PHP 的配置选项(需要“AllowOverride Options”或“AllowOverride All”权限)。
在httpd.conf文件里有关在该目录的设定里加上 (PHP4以上版本)
"php_admin_flag engine off"
例:
<Directory /srv/www/htdocs/path>
php_admin_flag engine off
</Directory>
====================================
把PHP脚本操作限制在web目录可以避免程序员使用copy函数把系统文件拷贝到web目录。
move_uploaded_file不受open_basedir的限制,所以不必修改php.ini里upload_tmp_dir的值。
把PHP脚本用phpencode进行加密,避免由于copy操作泄漏源码。
严格配置文件和目录的权限,只允许上传的目录能够让nobody用户可写。
对于上传目录去掉PHP解释功能,可以通过修改httpd.conf实现:
php_flag engine off
#如果是php3换成php3_engine off
重启apache,upload目录的php文件就不能被apache解释了,即使上传了php文件也没有问题,只能直接显示源码。
================================================
用Apache服务器,可以通过配置来禁止该目录下的PHP文件的访问,有两种方式:
方式一:.htaccess控制,适用于没有服务器管理权限。
在可写文件夹的目录下,建一个.htaccess文件,内容为:
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
方式二:修改Apache配置文件,适用于有服务器管理权限。
配置中增加如下内容:
<Directory "<path_to_writeable_dir>">
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
</Directory>
例如:
<Directory 你的图片目录>
<FilesMatch "\.(php|php3)$ ">
Deny from all
</FilesMatch>
</Directory>
<Directory "e:/webroot/test">
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
</Directory>
腾讯QQ: 84047848
移动电话: 13911098189
评论