我怎样才能禁用PHP的“复活节彩蛋”的url?

我最近在PHP中发现了所谓的“复活节彩蛋URL” :

这些是可以添加到PHP网页的末尾以查看(稍微)隐藏的图像或网页的四个QUERYstring:

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

这一张是最有趣的,并且展示了一只兔子在房子里的“复活节彩蛋”形象(斯特林·休斯的兔子,被命名为卡梅拉),一只棕色的狗在草地上,一只黑色的苏格兰梗狗,绘制的,蜡笔色的PHP标志,一个用面包棒(看起来像铅笔或炸薯条)像海象一样伸出来的人,或者一个PHP大象标志。

在这里输入图像说明

其他包括:

  • ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 (PHP标识)
  • ?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 (Zend标志)
  • ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (PHP Credits)

我很震惊地发现,这在许多网站,包括我自己的工作。 我认为这是愚蠢的,想要禁用它,但从我听到的唯一方法是在php.ini中用expose_php = Off ,并且它不能在运行时用ini_set() 来设置 。

我没有直接访问在服务器上的php.ini。 但是,我已经想出了如何在PHP代码中使用Header unset X-Powered-By.htaccessheader('X-Powered-By: ') Header unset X-Powered-By header('X-Powered-By: ')

有没有其他的方法可以禁用这些“复活节彩蛋”,或者我必须得到这个设置改变主php.ini (这是真正的禁用这些URL的唯一方法)?

一个快速的HTACCESS全局重写可以将每个URL的正确string进行正则expression,从而摆脱PHP中唯一有趣的部分,而不必触摸ini文件,也不需要在每个文件的开头都有一个函数。

还没有testing过,但这应该工作:

 RewriteEngine On RewriteCond %{QUERY_STRING} \PHPE9568F36-D428-11d2-A769-00AA001ACF42\ [NC] RewriteRule .* - [F] 

当然,只要复制其他每个可能查询的最后两行,或者写一个更通用的正则expression式。 我用正则expression式不好。 🙂

这个版本涵盖了所有的复活节彩蛋乐趣,并在这里find:

 RewriteEngine On RewriteCond %{QUERY_STRING} \=PHP[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} [NC] RewriteRule .* - [F] 

在php.ini中

 ; Decides whether PHP may expose the fact that it is installed on the server ; (eg 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 = Off 

这将有效地消除复活节彩蛋

更新:这是在PHP 5.5中删除,请注意这些链接如何不再在php.net上工作

http://phpsadness.com/sad/11