PHP彩蛋篇——意想不到的惊喜

前几天,听一个前辈说到,关于PHP中彩蛋的概念,顿时不知所云。作为漫威终极粉的我,彩蛋的概念,深深的植入已经在我脑子里。

但是PHP彩蛋我也是第一次听说,也问了几个近几年刚做PHP的朋友,都没有听过,估计只有老一辈的程序员们都知道。

彩蛋指电影中不仔细寻觅,会被忽略的有趣细节;还有就是影片剧情结束后,在演职员表滚屏时或之后出现的电影片段(通常是一些幽默场景或是跟续集有关的情节线索)。

在PHP中彩蛋,我们把它认为是:惊喜。

就是只要在运行PHP的服务器上,在域名后面输入下面的字符参数,就能返回一些意想不到的信息(有些服务器屏蔽)。

PHP中4个彩蛋

  • ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (PHP信息/贡献者列表)
  • ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 (PHP的LOGO)
  • ?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 (Zend LOGO)
  • ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 (PHP LOGO 蓝色大象)

配置好PHP解析服务器之后,写一个PHP程序如下:

1
2
3
<?
phpinfo();
?>

访问的时候index.php,然后拼接上面的参数,如下

就可以看到,如下参数的信息了。

如果你在博客或者网站上也发现了这个问题,不用马上去解决他。这不算是漏洞。只是开源团队开的一个玩笑,全世界的人都认可了的玩笑,所以他并不是PHP的漏洞。

当然,也有部分奇葩的人,会借助这个彩蛋去做一些事情,比如:

有些网站采用动态脚本生成纯静态HTML页或者是采用URL重写实现伪静态页面,如果网站使用的是PHP开发的话,可以尝试使用彩蛋的探测法,然后根据特有的技术,去做一些破坏或者攻击!

解决办法

可以通过apache或者nginx的配置文件去屏蔽。

  1. 默认情况下彩蛋的功能在php.ini中是开启的
1
2
3
4
5
6
7
8
9
10
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = On //暴露

只要将expose_php设置为Off即可!

expose_php = Off

  1. 也可以通过设置.htaccess来进行屏蔽。
1
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC] RewriteRule .* - [F]
坚持原创技术分享,您的支持将鼓励我继续创作!