避免恶意脚本攻击,nginx+php-fpm一定要修改php.ini中cgi.fix_pathinfo

今天在看资料学习的时候,居然提到了“cgi.fix_pathinfo漏洞“,经过我的探索,总算搞明白了!

 

什么是 cgi.fix_pathinfo 这个所谓的漏洞?

举例来说,如何你开启cgi.fix_pathinfo,它的危害就是假设你的网站有http://xx.com/a.jpg这样的一张图片,我通过http://xx.com/a.jpg/fujieace.php就可以查看到这个文件的二进制内容,意思就是可以通过php来执行它。

问题就来了,如果你的网站允许用户上传图片,那么用户就可以构造一些恶意的代码,并伪装成图片上传,然后通过上面说的那种方式就可以在你网站的服务器上面通过php跑恶意代码了。

 

php.ini 中 cgi.fix_pathinfo 应该如何设置?

php配置文件中这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0;

但是:这个配置默认是1的,设为0又会导致很多MVC框架(如Thinkphp)都无法运行。

因此:需要根据自己的需求来做设置!下面是我的配置文件所做的设置:

 

1、找到php.ini并打开它;

vim /usr/local/php/lib/php.ini

 

2、找到并修改cgi.fix_pathinfo参数;

;cgi.fix_pathinfo=1

修改为

cgi.fix_pathinfo=0

 

3、php.ini配置最终效果:

php.ini中cgi.fix_pathinfo

 

Nginx、Apache和IIS都存在cgi.fix_pathinfo漏洞这个问题吗?

这个问题只存在于 Nginx 服务器中,Apache和IIS都不会有这个问题。

同时也不建议关闭它(cgi.fix_pathinfo=0),很多代码都会依赖这个功能,关了基本上都会报错。

    A+
发布日期:2018年01月21日 20:06:44  所属分类:PHP
最后更新时间:2018-01-21 20:26:57
付杰
  • ¥ 59.0元
  • 市场价:99.0元
  • ¥ 68.0元
  • 市场价:128.0元
  • ¥ 498.0元
  • 市场价:998.0元
  • ¥ 79.0元
  • 市场价:99.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  0

  1. 头像 程序开发 0

    越深入越搞不懂