我们设置网站权限的时候,有些目录不得不设置让http服务器有写入权限,这样安全隐患就来了。比如discuz x2的 data目录,这个必须要有写入限,论坛才能正常运行,但有的黑客可能就会利用这个目录上传php文件(你会说附件上传已经限制这种格式的文件,但谁知道黑客会利用什么手段上传呢,只有他们清楚了),进而到配置文件读取到mysql的连接信息,那么你的数据库就是他的了。下面介绍apache和nginx下禁止指定目录执行php文件。
Apache的配置
<Directory /home/centos/web/data> php_flag engine off </Directory> <Directory ~ "^/home/centos/web/data"> <Files ~ ".php"> Order allow,deny Deny from all </Files> </Directory>
Nginx的配置
单个目录禁用解析php
location ~* ^/uploads/.*\.(php|php5)$
{
deny all;
}多个目录禁用解析php
location ~* ^/(attachments|uploads)/.*\.(php|php5)$
{
deny all;
}PS:禁用目录php解析需要放在php配置项前面才会生效
例如
location ~* ^/uploads/.*\.(php|php5)$
{
deny all;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
