+
 新版

如何配置Nginx多子目录下 统一目录名 upload 目录的php的执行权限

osc_588184 发布于 2013/12/20 10:40
阅读 979
收藏 1

现在服务器上有个目录是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脚本.

加载中
1
月影又无痕
月影又无痕

你的配置是错误的,存在安全漏洞,如果将php程序文件后缀改成gif, 发布到upload目录中,也有可能被执行的。

我们要做的是,upload目录下的任何文件(包括php文件,全不作解析执行),这样即便有人上传木马到upload,也无法执行,就安全得多。配置方法如下:

location ~ ^.*/upload/ {

}

将这个规则放在php后缀解析规则之前,这样就可以了,不要惊讶,空规则就可以了,因为正规表达式定义的location只匹配一次。

另外,你的网站文件所有者帐号是什么?php-fpm子进程以什么帐号运行?

osc_588184
osc_588184
以在user用户组里面的一个webuser帐号。不是root。但是我感觉这个权限有点大,因为他有sudo的权限。 另外php的后缀名改成gif也能执行吗?这个太惊讶了吧。。
0
狄大人
狄大人
^~/upload/.*.(php|php5)$
0
osc_588184
osc_588184

引用来自“月影又无痕”的答案

你的配置是错误的,存在安全漏洞,如果将php程序文件后缀改成gif, 发布到upload目录中,也有可能被执行的。

我们要做的是,upload目录下的任何文件(包括php文件,全不作解析执行),这样即便有人上传木马到upload,也无法执行,就安全得多。配置方法如下:

location ~ ^.*/upload/ {

}

将这个规则放在php后缀解析规则之前,这样就可以了,不要惊讶,空规则就可以了,因为正规表达式定义的location只匹配一次。

另外,你的网站文件所有者帐号是什么?php-fpm子进程以什么帐号运行?

亲测可用,先谢!不过全部禁止掉,用户的上传的头像也没了。话说,吧php的后缀改成gif也能执行吗?
0
osc_588184
osc_588184
还有,这两天抓到不少小马,基本上都是利用 php的这个命令的@eval执行的。在这里推荐一个很好的插件 suhosin 很好用。 
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部