现在服务器上有个目录是huodong 。如果huodong目录下面有个upload目录是用来上传文件的,那要禁止这个upload目录的php执行权限,可以在ngnix的配置文件里面加上:
location ~* ^/upload/.*.(php|php5)$
{
deny all;
}
这些就可以禁止了upload目录下php的执行权限了。
但是现在问题来了,huodong下面有很多子活动,都要分开。比如 huodong/a/upload、huodong/b/upload、huodong/c/upload 。如果按照上边的方法可能要写几十个配置了。
有没有办法用正值表达式来统一匹配,只要是目录名是upload的,都禁止执行php脚本.
Nginx
你的配置是错误的,存在安全漏洞,如果将php程序文件后缀改成gif, 发布到upload目录中,也有可能被执行的。
我们要做的是,upload目录下的任何文件(包括php文件,全不作解析执行),这样即便有人上传木马到upload,也无法执行,就安全得多。配置方法如下:
location ~ ^.*/upload/ {
}
将这个规则放在php后缀解析规则之前,这样就可以了,不要惊讶,空规则就可以了,因为正规表达式定义的location只匹配一次。
另外,你的网站文件所有者帐号是什么?php-fpm子进程以什么帐号运行?
引用来自“月影又无痕”的答案
你的配置是错误的,存在安全漏洞,如果将php程序文件后缀改成gif, 发布到upload目录中,也有可能被执行的。
我们要做的是,upload目录下的任何文件(包括php文件,全不作解析执行),这样即便有人上传木马到upload,也无法执行,就安全得多。配置方法如下:
location ~ ^.*/upload/ {
}
将这个规则放在php后缀解析规则之前,这样就可以了,不要惊讶,空规则就可以了,因为正规表达式定义的location只匹配一次。
另外,你的网站文件所有者帐号是什么?php-fpm子进程以什么帐号运行?