如何禁用PHP的“复活节彩蛋”网址?

时间:2012-05-05 03:34:25

标签: php

我最近在PHP中发现了所谓的"easter egg URLs"

  

这些是您可以添加到PHP网页末尾的四个QUERY字符串,用于查看(有些)隐藏的图像或网页:

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

    这是最有趣的,并显示“复活节彩蛋”图像   在房子里的一只兔子(斯特林休斯的兔子,名字   Carmella),一只棕色的狗在草地上,一只黑色的苏格兰梗狗,一只   草率的孩子手绘,蜡笔色的php标志,一个人   面包棒(看起来像铅笔或炸薯条)伸出他的   嘴巴像海象,或PHP大象标志。

    enter image description here

    其他包括:

    • ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42(PHP徽标)
    • ?=PHPE9568F35-D428-11d2-A769-00AA001ACF42(Zend logo)
    • ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000(PHP学分)

    我很震惊地发现这确实适用于很多网站,包括我自己的网站。我认为这是愚蠢的并想要禁用它,但从我听到的唯一的方法是使用expose_php = Off的php.ini,ini_set()的{​​{3}}。

    我没有直接访问实时服务器上的php.ini。但是,我已经找到了如何使用can't be set at runtime取消设置X-Powered-By标头的方法在.htaccess或PHP代码中的header('X-Powered-By: ')

    我有没有其他方法可以禁用这些“复活节彩蛋”,或者我必须在主php.ini中更改此设置(这是否确实是禁用这些网址的正确/唯一方法)?

4 个答案:

答案 0 :(得分:58)

在php.ini中

; 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 = Off

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

答案 1 :(得分:32)

一个快速的HTACCESS全局重写可以正确地从每个URL中取出正确的字符串,从而摆脱PHP唯一有趣的部分而不触及ini文件,也不需要在每个文件的开头都有函数。

尚未对此进行测试,但这应该有效:

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

当然,只需为每个其他可能的查询复制最后两行,或者编写更通用的正则表达式。我对正则表达式不满意。 :)

这个版本涵盖了所有复活节彩蛋的乐趣,并被发现here:

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]

答案 2 :(得分:9)

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

http://phpsadness.com/sad/11

答案 3 :(得分:0)

不确定您的情况,但这对我的网站有用。希望它也适用于您的网站。

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

当然,只需为每个其他可能的查询复制最后两行,或编写一个更通用的正则表达式。我对正则表达式不好。 :)