Как я могу отключить URL-адреса PHP "пасхальное яйцо"?

Недавно я узнал о так называемом "URL-адресах пасхальных яиц" в PHP:

Это четыре строки QUERY, которые вы можете добавить в конец веб-страницы PHP, чтобы просмотреть (несколько) скрытое изображение или веб-страницу:

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

Это самое интересное и отображает изображение "пасхального яйца" либо кролика в доме (кролика Стерлинга Хьюза, названного Кармелла), коричневая собака в траве, черная собака шотландского терьера, небрежный ребенок, нарисованный рукой, цветной логотип php, цветной карандаш, парень с хлебные палочки (выглядят как карандаши или картофель-фри), торчащие из его рот, как морж, или логотип слона PHP.

enter image description here

Другие включают:

  • ?=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 на реальном сервере. Я, однако, выяснил, как отключить заголовок X-Powered-By, используя Header unset X-Powered-By в .htaccess или header('X-Powered-By: ') в коде PHP.

Есть ли другой способ отключить эти "пасхальные яйца", или мне нужно изменить этот параметр в главном php.ini (и это действительно правильный/единственный способ отключить эти URL-адреса)?

Ответ 1

Быстрая глобальная переработка HTACCESS может повторно выставлять точную строку прямо из каждого URL, тем самым избавляясь от единственной забавной части PHP, не касаясь INI файла и не нуждаясь в функции в начале каждого файла.

Не тестировали это еще, но это должно работать:

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

Конечно, просто скопируйте последние 2 строки для каждого из других возможных запросов или напишите более общее регулярное выражение. Мне плохо с регулярным выражением.:)

Эта версия охватывает все веселье пасхального яйца и была найдена здесь:

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

в 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

Это эффективно удалит пасхальные яйца

Ответ 3

Обновление: это удалено в PHP 5.5, обратите внимание, как эти ссылки больше не работают на php.net

http://phpsadness.com/sad/11