前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx和Apache中配置禁止PHP可执行权限

Nginx和Apache中配置禁止PHP可执行权限

作者头像
申霖
发布2020-06-18 10:49:08
1.6K0
发布2020-06-18 10:49:08
举报
文章被收录于专栏:小白程序猿小白程序猿

今天继续来说一说安全方面的知识,在项目完成开发后,我们要在测试环境测试,生产环境部署等一系列操作。我们以thinkphp5.1版本为例,在5.1版本中使用了单一入口模式,同时将动态文件和静态文件进行了分离。我们本次主要说一下目录权限和脚本权限。使用过thinkphp框架的知道,我们将index.php文件(入口文件)放置在public目录内。同时也将一些静态资源文件,如样式文件、图片文件及其他文件放置在其中,这里面对目录建议只设置读取和执行权限。对脚本文件只设置读取权限。

综合建议如下:

1、 尽可能的减少public目录下可写入目录的数量

2、 文件的写入权限和执行权限只能选其一,避免同时出现写入和执行权限。最直接的例子就是我们上传的图片,一般来说我们将图片上传至upload目录下,层级关系如下:/upload/20200506/2341028309128903127.jpg,图片如果是我们后台上传的还比较好控制,如果是用户上传的,则可能会出现图片木马,一旦我们在上传时为限制图片格式、图片大小等问题,非常容易被攻击者上传木马文件。如果文件被赋予了执行的权限,那么这是一个非常危险的情况。因此,我们应该严格禁止可执行权限。

如何在服务器中禁止图片存储目录的可执行权限呢?请看下面的例子,我将以Apache和nginx为例。

1、 apache下禁止指定目录运行PHP脚本。只需要在配置文件中增加php_flag engine off指令即可,实例如下:

代码语言:javascript
复制
<Directoryt /Upload>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
# 禁止上传目录中的php脚本执行
php_flag engine off
</Directory>

2、 apache也可以在.htaccess文件中进行配置,实例如下:

代码语言:javascript
复制
RewriteEngine on RewriteCond %  !^$
RewriteRule Upload/(.*).(php)$  -[F]
RewiteRule Public/static/(.*).(php)$ -[F]

3、 nginx下禁止制定目录运行php脚本,在server配置中增加配置参数,可以通过location条件匹配定位后进行权限禁止。

代码语言:javascript
复制
#单个目录禁止
Location ~* ^/upload/.*\.(php|PHP 5)$
{
deny all
}
# 多个目录禁止
Location ~*  ^/(upload|static)/.*\.(php|PHP 5)$
{
deny all
}

注意事项,配置必须要防止在下面的配置前面才会生效

代码语言:javascript
复制
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;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档