php.ini中的cgi.fix_pathinfo选项_Able张的博客-CSDN博客


本站和网页 https://blog.csdn.net/zhwxl_zyx/article/details/105344776 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

php.ini中的cgi.fix_pathinfo选项_Able张的博客-CSDN博客
php.ini中的cgi.fix_pathinfo选项
Able张
于 2020-04-06 15:32:23 发布
2968
收藏
分类专栏:
PHP
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhwxl_zyx/article/details/105344776
版权
PHP
专栏收录该内容
71 篇文章
0 订阅
订阅专栏
PHP里经常要获取当前请求的URL路径信息。一般可以通过环境变量$_SERVER[‘PATH_INFO’]获取,而配置文件中的cgi.fix_pathinifo选项则与这个值的获取相关。而$_SERVER[‘PATH_INFO’]中的key PATH_INFO是一个CGI 1.1的标准,经常用来做为传递参数给后端的CGI服务器。
被很多系统用来优化url路径格式,比如对于很多框架,下面这个网址: http://www.test.com/index.php/test/my.html?c=index&m=search 我们可以得到 $_SERVER[‘PATH_INFO’] = ‘/test/my.html’ $_SERVER[‘QUERY_STRING’] = ‘c=index&m=search’;
我们再说下php.ini中的配置参数cgi.fix_pathinfo,它是用来对设置cgi模式下为php是否提供绝对路径信息或PATH_INFO信息。没有这个参数之前PHP设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME,没有PATH_INFO值。设置cgi.fix_pathinfo=1后,cgi设置完整的路径信息PATH_TRANSLATED的值为SCRIPT_FILENAME,并且设置PATH_INFO信息;如果设为cgi.fix_pathinfo=0则只设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME。cgi.fix_pathinfo的默认值是1。 nginx默认是不会设置PATH_INFO环境变量的的值,需要通过正则匹配设置SCRIPT_FILENAME,但这样会带来安全隐患,需要把cgi.fix_pathinfo=0设置为0。但是一旦关闭这个这场,PHP就获取不到PATH_INFO信息,那些依赖PATH_INFO进行URL美化的程序就失效了。关于安全隐患的问题,请看 http://www.laruence.com/2010/05/20/1495.html
网上给出了一些方案,在关闭cgi.fix_pathinfo时使依赖PATH_INFO美化url的程序能够正常工作。 1.可以通过rewrite方式代替php中的PATH_INFO 实例:thinkphp的pathinfo解决方案 设置URL_MODEL=2 location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$1 last; } } 2.nginx配置文件中设置PATH_INFO值 请求的网址是/abc/index.php/abc PATH_INFO的值是/abc SCRIPT_FILENAME的值是$doucment_root/abc/index.php SCRIPT_NAME /abc/index.php 旧版本的nginx使用如下方式配置 location ~ .php($|/) { set $script $uri; set $path_info “”;
if ($uri ~ “^(.+.php)(/.+)”) { set $script $1; set $path_info $2; }
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$script; fastcgi_param SCRIPT_NAME $script; fastcgi_param PATH_INFO $path_info; } 新版本的nginx也可以使用fastcgi_split_path_info指令来设置PATH_INFO,旧的方式不再推荐使用,在location段添加如下配置。 location ~ ^.+.php { … fastcgi_split_path_info ^((?U).+.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; … }
通过上面的描述,我们似乎得出了一个结论:为了安全要关闭掉cgi.fix_pathinfo设置。 但是我们来看看php.ini的配置及说明
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=1
设置cgi.fix_pathinfo=1才符合cgi标准。那么有什么办法可以在保持cgi.fx_pathinfo默认设置的情况下,保证系统安全吗?
好消息,新版本PHP(我验证至少PHP5已经有了这个参数)的fpm配置里新增了一个额外参数(php-fpm.d/www.conf), security.limit_extensions = .php .php3 .php4 .php5 .php7
专门用来限制PHP脚本引擎只支持解析哪些扩展名的文件
; Limits the extensions of the main script FPM will allow to parse. This can ; prevent configuration mistakes on the web server side. You should only limit ; FPM to .php extensions to prevent malicious users to use other extensions to ; execute php code. ; Note: set an empty value to allow all extensions. ; Default Value: .php ;security.limit_extensions = .php .php3 .php4 .php5 .php7
所以在使用nginx+php-fpm时,可以不用修改系统默认的cgi. fix_pathinfo=1设置了。
Able张
关注
关注
点赞
收藏
打赏
知道了
评论
php.ini中的cgi.fix_pathinfo选项
PHP里经常要获取当前请求的URL路径信息。一般可以通过环境变量$_SERVER[‘PATH_INFO’]获取,而配置文件中的cgi.fix_pathinifo选项则与这个值的获取相关。而$_SERVER[‘PATH_INFO’]中的key PATH_INFO是一个CGI 1.1的标准,经常用来做为传递参数给后端的CGI服务器。被很多系统用来优化url路径格式,比如对于很多框架,下面这个网址:...
复制链接
扫一扫
专栏目录
php.ini中的request_order推荐设置
10-24
主要介绍了php.ini中的request_order推荐设置,需要的朋友可以参考下
iCan.rar_JSP config.ini_ican_ican官网_jsp access
09-23
网站名称:网络百宝箱 编写语言:JSP 后台数据库:access 运行环境平台:安装windows XP sp2 的PC机; 安装了access数据库; 安装了Tomcat
参与评论
您还未登录,请先
登录
后发表或查看评论
关于在php.ini中添加extension=php_mysqli.dll指令的说明
10-30
关于在php.ini中添加extension=php_mysqli.dll指令的说明
不用API的ini文件读写.rar_.ini文件读写_ini_ini 文件_ini文件_ini读写
09-14
不用API的ini文件读写,支持现有的INI读写,并且还可以脱离API的限制,再修改一下源码就能更好的支持其它的文件读写
BepInEx_x86_5.1.0.0_doorstop_config.ini_BepInEx框架下载_BepInEx5_Bep
10-02
dd MCI files for redist as required
php的cgi.fix_pathinfo解析
热门推荐
乐乐的博客
09-11
1万+
fix_pathinfo是用来干嘛的呢?为CGI提供真正的PATH_INFO / PATH_TRANSLATED支持。 PHP的以前的行为是将PATH_TRANSLATED设置为SCRIPT_FILENAME,并且不要弄清PATH_INFO是什么。 有关PATH_INFO的更多信息,请参阅CGI规范。 将其设置为1将导致PHP CGI修复其路径以符合规范。 设置为零会导致PHP的行为像以前一样。 默
php cgi.fix pathinfo,Nginx + PHP CGI的安全漏洞:fix_pathinfo
weixin_39539002的博客
03-27
264
如果你正在使用nginx+php,请关注。表像:具体的重现过程,用php代码修改后缀名后上传,比如说www.xxx.com/1.jpg,访问的时候用www.xxx.com/1.jpg/xxx.php 这段jpg代码将会被执行!!!http://docs.php.net/manual/zh/ini.core.phpcgi.fix_pathinfo “1″ PHP_INI_ALL 从 PHP 4.3....
PHP CGI 中 fix_pathinfo 引起的安全隐患
weixin_33854644的博客
07-24
282
这两天网上开始疯传一个“nginx文件类型错误解析漏洞”,这个“漏洞”是这样的:
假设有如下的 URL:http://phpvim.net/foo.jpg,当访问 http://phpvim.net/foo.jpg/a.php 时,foo.jpg 将会被执行,如果 foo.jpg 是一个普通文件,那么 foo.jpg 的内容会被直接显示出来,但是如果把一段 php 代码保存为 foo.j...
nginx文件类型错误解析漏洞
心 境地
05-10
2792
问题简介:
nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。nginx默认以cgi的方式支持php的运行,而为了较好的支持PATH_INFO的提取,在PHP的配置选项里存在cgi.fix_pathinfo选项,其目的是为了从SCRIPT_FILENAME里取出真正的脚本名,而攻击者则利用这点可以将任何类型的文件以PHP的方式进行解析。
nginx的fix_pathinfo漏洞
tpl_01
03-17
2206
现在普遍的Nginx + PHP cgi的做法是在配置文件中, 通过正则匹配(Nginx(PHP/fastcgi)的PATH_INFO问题)设置SCRIPT_FILENAME, 今天小顿发现了一个这种方式的安全漏洞.
比如, 有http://www.laruence.com/fake.jpg, 那么通过构造如下的URL, 就可以看到fake.jpg的二进制内容:
http://www.lar
php.ini 启用disable_functions提高安全
09-30
如果想保证服务器的安全,请将这个函数加到disable_functions里或者将安全模式打开吧,在安全模式下dl函数是无条件禁止的
hwids.ini.rar_Windows编程_Windows_Unix_
08-12
hwids.ini.rar 5238869
SecureCRT_192.168.10194_crtbuttonbarv4.ini_secureCRT_
10-02
是一款SSH客户端软件,通过使用内含的VCP命令行程序可以进行加密文件的传输
read_ini.rar_read_ini_readme.ini
09-19
读写INI文件,很不错的vc源码,希望能对大家有所帮助
配置php.ini实现PHP文件上传功能
10-25
为大家介绍下在php.ini文件中配置php文件上传功能的方法,涉及到一些重要的选项,关系到php上传文件大小的限制等,有需要的朋友参考下
Nginx文件解析漏洞复现
安全知识学习
03-28
385
目录
Nginx文件解析漏洞复现
漏洞介绍
必要理解
复现过程
分析及防御
漏洞修复
Nginx文件解析漏洞复现
漏洞介绍
该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞
必要理解
cgi.fix_pathinfo
该选项位于配置文件php.ini中,默认值为1,表示开启。当php遇到文件路径/test.png/x.php时,若/test.png/x.php不存在,则会去掉最后的/x.php,然后判断/test.png是否存在,若存在,则把/test.pn.
【中间件】一些中间件的相关漏洞总结
Monsterlz123的博客
07-16
1565
【中间件】一些中间件的相关漏洞总结
Hello,各位小伙伴晚上好~
这里是你们连续三天发文,高产似母猪的小编。
今天跟大家唠唠一些常见的中间件漏洞
包括常见的IIS、Apache、Nginx以及Tomcat
废话不多说,让我们直接开始吧~
(好啦我承认今天的表情包是因为好想去迪斯尼,难道是上年纪了吗,嗯?)
目录
一、IIS
IIS 6.0 解析漏洞
IIS 7.5 解析漏洞
IIS 6...
php.ini cgi.fix_pathinfo,nginx设置cgi.fix_pathinfo漏洞和解决方法
weixin_36260335的博客
03-21
278
最近在学习nginx的配置,有一个设置需要在php.ini中把 cgi.fix_pathinfo = 1 改成cgi.fix_pathinfo=0, 想了解下这个参数设置的具体功能,所以百度了下,发现这里有一个PHP PATH_INFO的漏洞(详见:https://bugs.php.net/bug.php?id=50852&edit=1)大致先了解下。【漏洞分析】location对请求进行...
php 安装 cgi,PHP CGI配置选项说明
weixin_32049085的博客
03-10
381
include_path指定一组目录用于 , 和 fopen_with_path() 函数来寻找文件。格式和系统的 PATH 环境变量类似:一组目录的列表,在 UNIX 下用冒号分隔,在 Windows 下用分号分隔。例子 H-1. UNIX include_pathinclude_path=".:/php/includes"例子 H-2. Windows include_pathinclude_...
writePath("../user.ini", "SONG_PATH", ui->lb_SongPath->text()); writePath("../user.ini", "LYRIC_PATH", ui->lE_lyricPath->text());
最新发布
03-13
这是一个关于写入文件路径的问题,我可以回答。这段代码的作用是将歌曲路径和歌词路径写入到一个名为"user.ini"的文件中。其中,"SONG_PATH"和"LYRIC_PATH"是文件中的键,而"ui->lb_SongPath->text()"和"ui->lE_lyricPath->text()"则是对应的值。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
Able张
CSDN认证博客专家
CSDN认证企业博客
码龄11年
暂无认证
213
原创
3万+
周排名
102万+
总排名
45万+
访问
等级
6230
积分
51
粉丝
67
获赞
40
评论
363
收藏
私信
关注
热门文章
Centos 文件和目录访问权限设置
14748
Laravel的Warning: require..../vendor/autoload.php错误的解决办法
14495
springmvc+mybatis 无极限树形结构菜单
13186
apache服务器出现No input file specified.解决方案
10779
linux中free命令查询的total used free shared buff/cache available各自代表的意思以及相关优化
9793
分类专栏
Goland
4篇
分布式
DevOps
1篇
Composer
4篇
Redis
20篇
性能测试
2篇
Jmeter
3篇
Docker
8篇
otter
2篇
算法
2篇
Lumen
5篇
zookeeper
2篇
RebbitMq
2篇
Swoole
2篇
监控
4篇
前端
6篇
Elasticsearch
PHP
71篇
MYSQL
57篇
Linux
23篇
Python
4篇
Mongodb
5篇
Socket
1篇
缓存技术
2篇
Apche
16篇
Nginx
16篇
Laravel
10篇
JS
5篇
其他
22篇
Hadoop
1篇
Java
19篇
大数据
3篇
YII2
1篇
Mybatis
6篇
Spring
10篇
架构
13篇
CodeIgniter
1篇
Git
11篇
Oracle
1篇
最新评论
Laravel的Warning: require..../vendor/autoload.php错误的解决办法
qq1438206000:
太感谢了, 解决了
Golang 协程调度
叫我小黄吧:
oroutine的优势在于上下文切换在完全用户态进行,无需像线程一样频繁在用户态与内核态之间切换,节约了资源消耗。这句话我觉得有问题。go协程和posix线程最大的区别不是内核态和用户态之间的切换的频繁程度,而是切换时需要保存的信息数量。
Mysql的sql_mode设置
不学精通不改名:
博主,我想问一下 为什么我把那句话放到配置文件中,mysql服务启动不了了
Docker:docker镜像与容器的导入和导出
m0_51786450:
导入的镜像如何创建容器
php 接入google 验证用户登录
跨越全球:
我按照这个来了,提示Class "App\Http\Controllers\Api\Google_Client" not found
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
图解Go语言的gc算法——三色标记
Golang 协程调度
在Sublime Text 中运行PHP代码
2021年32篇
2020年124篇
2019年44篇
2018年1篇
2017年6篇
2016年37篇
2015年101篇
2014年30篇
目录
目录
分类专栏
Goland
4篇
分布式
DevOps
1篇
Composer
4篇
Redis
20篇
性能测试
2篇
Jmeter
3篇
Docker
8篇
otter
2篇
算法
2篇
Lumen
5篇
zookeeper
2篇
RebbitMq
2篇
Swoole
2篇
监控
4篇
前端
6篇
Elasticsearch
PHP
71篇
MYSQL
57篇
Linux
23篇
Python
4篇
Mongodb
5篇
Socket
1篇
缓存技术
2篇
Apche
16篇
Nginx
16篇
Laravel
10篇
JS
5篇
其他
22篇
Hadoop
1篇
Java
19篇
大数据
3篇
YII2
1篇
Mybatis
6篇
Spring
10篇
架构
13篇
CodeIgniter
1篇
Git
11篇
Oracle
1篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
Able张
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值