nginx + php-fpm fastcgi防止跨站、跨目录的安全设置
我们知道apache php mod的方式可以很方便的配置 open_basedir 限制各个站点的目录访问权限。
nginx + php-fpm fastcgi的方式需要这样做。
首先php的版本必须大于等于php5.3.3。
总限制 通过php-fpm.conf限制
在php-fpm.conf配置文件当中可以增加如下参数
env[TMP] = /tmp/ env[TMPDIR] = /tmp/ env[TEMP] = /tmp/ php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f webmaster@qq.com php_admin_value[open_basedir] = /home/wwwroot/:/tmp/:/var/tmp:/proc/ php_admin_value[session.save_path] = /tmp/ php_admin_value[upload_tmp_dir] = /tmp/ slowlog = /usr/local/php/var/log/$pool.log request_slowlog_timeout = 3s
可以配置env,php_admin_value。
那么配置
php_admin_value[open_basedir] = /home/wwwroot/:/tmp/:/var/tmp:/proc/
就可以把整个php脚本的访问目录控制住了。
如果方法1 方法2 方法3未配置的情况下,那么open_basedir的值就为本设置的值,如果方法1 方法2 方法3设置了,那么就是新设置的值。
另外的我这里打开了php慢执行。
slowlog 写保存路径,request_slowlog_timeout写时间。
更多的请看php官网手册 http://www.php.net/manual/en/install.fpm.configuration.php
方法1 在nginx 配置 fastcgi_param参数
在nginx的 php配置中 或者 在 包含的 include fastcgi.conf 文件中加入:
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
$document_root php文档根目录,就是 nginx 配置项 root 配置的网站目录。
/tmp/目录需要有权限,默认放seesion的位置,以及unixsock。
/proc/ 可以让php查看系统负载信息。
本方法加的各个vhost 虚拟主机,都可以完美使用。都限制到自己的网站目录下。
非常推荐使用, 总限制 + 方法1 这样的组合配置方式!!!!!
方法2 在php.ini 中配置
在php.ini的末尾加入:
[HOST=www.iamle.com] open_basedir=/home/wwwroot/www.iamle.com:/tmp/:/proc/ [PATH=/home/wwwroot/www.iamle.com] open_basedir=/home/wwwroot/www.iamle.com:/tmp/:/proc/
本方法的弊端,如果有泛域名解析,比如 *.iale.com 。这个就不好控制。
方法3 网站根目录下增加 .user.ini 文件。
在php.ini中找到user_ini.filename 、 user_ini.cache_ttl 去掉前面的分号。
; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" user_ini.filename = ".user.ini" ; To disable this feature set this option to empty value ;user_ini.filename = ; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) user_ini.cache_ttl = 300
在网站根目录下创建.user.ini 加入:
open_basedir=/home/wwwroot/www.iamle.com:/tmp/:/proc/
这种方式不需要重启nginx或php-fpm服务。
特别注意,需要取消掉.user.ini文件的写权限,这个文件只让最高权限的管理员设置为只读。
方法1设置后,.user.ini的设置就不起作用了。
关于.user.ini文件的详细说明:
http://php.net/manual/zh/configuration.file.per-user.php
原文链接:https://www.iamle.com/archives/1609.html
(资源库 www.zyku.net)
您可能感兴趣的文章
- 04-01nginx+php使用open_basedir限制站点目录防止跨站
- 06-17帝国CMS7.5版COOKIE安全设置升级,更上一台阶
- 02-22Linux下DedeCMS安全设置的详细教程
- 01-13织梦DedeCms的安全问题解决办法(安全设置)
- 01-12dedecms安全设置集合整理
- 02-26帝国网站管理系统之安全设置最优化
- 12-25Windows Server 2008 R2常规安全设置及基本安全策略
- 11-28隐藏PHP版本与PHP基本安全设置
- 10-12帝国cms网站安全设置 让你的网站更安全
- 01-12AI证件照制作-AI证件照制作应用软件功
- 11-09iphone13怎样保护电池寿命
- 11-06bose蓝牙耳机如何配对手机
- 07-15dedecms 频道页如何调用栏目下推荐文
- 09-20B站收藏夹排序教程介绍
- 01-13dedecms调用栏目名称与栏目链接地址的
- 01-11起点女生网-起点女生网应用软件功能介
- 12-29极速测网速-极速测网速应用软件功能介
- 09-04支付宝有点东西内容怎样更换
- 02-01华为儿童手表4x远程关机步骤
- 09-20amazfit智能手表如何绑定手机
最近更新
阅读排行
猜你喜欢
- 01-11贤集-贤集应用软件功能介绍
- 12-22小米打印机重新设置网络方法介绍
- 03-03OPPO手机启用地震警报操作方法
- 12-30唐旅畅行-唐旅畅行应用软件功能介绍
- 04-07小米10s开发者选项设置方法
- 03-24opporeno5游戏空间中添加游戏教程
- 02-28帝国CMS在IIS环境开启TAG伪静态后,中文
- 01-25华为mate40关闭悬浮导航教程
- 02-19一加9性能模式开启教程
- 01-11Ready4FCE-Ready4FCE应用软件功能介绍