1、设置php.ini的cgi.fix_pathinfo为0,重启php。最方便,但修改设置 的影响需要自己评估。
2、给nginx的vhost配置添加如下内容,重启 nginx。vhost较少的情况下也很方便。
if ( $fastcgi_script_name ~ ..*/.*php ) {return 403;}
3、禁止上传目录解释PHP程序。不需要动webserver,如果vhost和服务器较多,短期 内难度急剧上升;建议在vhost和服务器较少的情况下采用。
漏洞描述见:http://www.80sec.com/nginx-securit.html
update:
更新两种修改漏洞的办法,一种是在虚拟主机中加入以下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
location ~* .*.php($|/)
{
if ($request_filename ~* (.*).php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
另一种是在fastcgi_params中加入以下代码,并且在location配置php中,引用此fastcgi_params
if ($request_filename ~* (.*).php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}
以下是fastcgi_params的配置
fastcgi_param .........