辉克's Blog

创造机会的人是勇者;等待机会的人是愚者

阻止PHP彩蛋信息泄漏

Easter Eggs(复活节彩蛋)外行人估计不了解这是神木玩意,彩蛋的网络解释是:用于电脑、电子游戏、电脑游戏、影碟或其他互动多媒体之中的隐藏功能或信息。PHP包含一个安全漏洞,可能导致未经授权的信息披露,如果你正在运行PHP,就有可能会被人发现PHP版本和其他敏感信息。我觉得有必要解决这个彩蛋问题来确保你网站的安全性。

PHP彩蛋是如何运作的
只要运行PHP的服务器上,访问任何网页都可以在域名后添加以下字符串来查看信息:

?=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 蓝色大象)


?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000


?=PHPE9568F34-D428-11d2-A769-00AA001ACF42


?=PHPE9568F35-D428-11d2-A769-00AA001ACF42


?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

当然,如果漏洞存在才可以通过以上来查看到信息,现在一般网站都已经屏蔽了。但如果存在说明其expose_php是启用状态,PHP将生成页面发送出PHP版本信息,这样一些”坏人”就知道了你的版本号来利用已知的版本漏洞来进行攻击。

如何阻止彩蛋
一般情况下如果你的服务器支持编辑php.ini文件,我们可以把php.ini里的expose_php设为Off就可以屏蔽了。如果你不能操作php.ini文件,也可以通过设置.htaccess来进行屏蔽。

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]
通过以上两种方法,我们可以屏蔽一些PHP信息,一些服务器默认设置expose_php是开启的,所以来看我这篇文章的朋友们最好是把它关闭了。

Really appreciate it Jeff Starr‘s post expose_php, Easter Eggs, and .htaccess.

示例:
http://wowo.haotui.com/space.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
http://en.wikipedia.org/w/index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.zend.com/en/index.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42

发表评论

电子邮件地址不会被公开。 必填项已用*标注