今天在QQ群上,突然有人问“nginx php有关cgi.fix_pathinfo导致文件类型错误解析漏洞“的解决方法是什么,当时就有人提出目前网上出现较多的解决方案:

方法1:

关闭cgi.fix_pathinfo为0

方法2:

if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}

经过本人测试,方法1不可取,如果关闭,像phpmyadmdin这样需要在二级目录访问的,在登录的时候就会跳转到首页。

方法2能屏蔽大多数情况,但是如果上传的文件是没有后缀名的,那一样是可以运行的

在此,本人使用了第三种方法,加一条

try_files $fastcgi_script_name = 404;

此方法可以杜绝方法1和方法2的不足。