65

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

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

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

这个是最有趣的,它展示了一个“复活节彩蛋”图像,要么是房子里的兔子(Sterling Hughes 的兔子,名叫 Carmella),要么是草丛中的棕色狗,要么是黑色的苏格兰梗犬,要么是邋遢的孩子手——绘制的,蜡笔色的 php 标志,一个拿着面包棒(看起来像铅笔或炸薯条)的家伙像海象一样从嘴里伸出来,或者 PHP 大象标志。

在此处输入图像描述

其他包括:

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

我震惊地发现这确实适用于很多网站,包括我自己的网站。我认为这是愚蠢的并想禁用它,但据我所知,唯一的方法是在 php.ini 中使用expose_php = Off,并且不能在运行时使用ini_set().

我无法直接访问实时服务器上的 php.ini。但是,我已经弄清楚了如何X-Powered-By通过使用Header unset X-Powered-Byin.htaccessheader('X-Powered-By: ')PHP 代码来取消设置标头。

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

4

3 回答 3

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

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

于 2012-05-16T19:13:27.610 回答
32

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

尚未对此进行测试,但这应该可以:

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

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

这个版本涵盖了所有复活节彩蛋的乐趣,可以在这里找到:

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]
于 2012-05-05T03:42:41.740 回答
10

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

http://phpsadness.com/sad/11

于 2013-12-07T06:12:16.840 回答