Пожалуй, всем известно, что сегодня, 5 апреля 2010 года, и католики и православные отмечают Пасху. Пользуясь случаем, я решил написать статью о пасхальных яйцах, только не таких, которые красят, а о тех, происхождение которых связано с тематикой Хабра. Речь пойдёт о пасхальных яйцах языка PHP.
Сразу хочется подчеркнуть, что пасхальные яйца PHP, о которых пойдёт речь, абсолютно безобидны. Их существование никак не может отрицательно сказаться на работе сайта. Как я уже сказал, существует несколько особых строчек (назовём их сигнатурами), добавление которых к запросу ВНЕЗАПНО меняет ответ сервера. Синтаксически сигнатура должна являться значением безымянной и единственной GET-переменной (например, mypage.php?=×××).
Талисман PHP «elePHPant» (некоторые версии 5.2.?).
Подробнее о соответствии версий PHP и этих картинок можно посмотреть в одной англоязычной статье на эту тему на сайте 0php.com. Жалко, что не получилось абсолютно точно установить зависимость, потому что на официальном сайте PHP CVS-log файла, где хранятся изображения, не работает. Прошу прощения, если я где-то ошибся.
Все три изображения (логотип Zend, логотип PHP, забавная картинка) имеют формат GIF и хранятся в виде массивов байт в файле main/logos.h.
Можно ли как-то это отключить?
Если Вы администрируете написанный на PHP сайт, Вы, скорее всего, уже попробовали провернуть этот трюк со своим проектом. Если пасхальное яйцо «работает», то Вы, вероятно, уже решили от него избавиться. Сделать это чрезвычайно просто.
Достаточно открыть у себя на сервере файл php.ini, найти параметр expose_php и поменять его значение на «off»:
expose_php = off
После перезагрузки веб-сервера картинки и страница с информацией о разработчиках перестанут появляться — необычные запросы начнут обрабатываться в обычном режиме. Также сервер прекратит добавлять строку «X-Powered-By: PHP/×.×.× ...» в HTTP-заголовки ответов, упоминание о PHP уберётся из строки «Server: ...» (если оно сейчас там есть).
Избавившись от этого «ужасного хака», Вам удастся всего лишь скрыть факт того, что Ваш сайт использует PHP. Конечно, это относится только к проектам с ЧПУ (да и то далеко не всем). Если же ссылки на Вашем сайте имеют вид «my_cosy_guestbook.php?do=delete_all», Вас это, естественно, не спасёт. Перед поиском и изменением файла php.ini обязательно не забудьте для себя ответить на вопрос: «А оно мне надо?».
Применение в хозяйстве
Несмотря на кажущуюся бесполезность, у описанного пасхального яйца есть практическое применение. Если на своём сайте вывести информацию о системе с помощью функции phpinfo(), Вы увидите логотипы PHP и Zend, а также ссылку «PHP Credits». По какому URI будут запрошены картинки, и куда будет вести ссылка на список разработчиков, догадаться теперь совсем несложно. Ресурсы получаются доступными, даже если сайт тестируется на локальной машине, не имеющей доступ в Интернет. Это работает только при включенной опции expose_php (иначе картинки и ссылка не отображаются). Вот рабочий пример: www.it.tsu.ge/info.php (сайт не мой, я просто разместил объяву ссылку). Ещё пример: hosting.iptcom.net/phpinfo.php (оказывается, картинка с логотипом Zend была совсем другой в версии PHP 4.4.4). Пример сайта с выключенной опцией expose_php на сервере: help.secureserver.net/linux-phpinfo.html.
Яйцо-бонус
Изучая исходники PHP, я случайно наткнулся на источник ещё одного забавного секрета, несколько раз упомянутого в Интернете. Оказывается, что 1 апреля логотип, генерируемый функцией php_logo_guid(), заменяется забавной картинкой (как для случая с сигнатурой PHPE9568F36-D428-11d2-A769-00AA001ACF42). Получается, что в этот день логотип поменяется и на странице, полученной с помощью phpinfo().
В исходниках версии 5.2.13 за это «яйцо» отвечают строчки 1237-1238 файла ext/standard/info.c. Жаль, что увидеть в действии его можно только почти через год. Хотя, нетерпеливые товарищи в любой момент могут поменять системную дату. ;)
Яйцо-бонус № 2
К концу написания статьи выяснилось, что есть ещё одна сигнатура, которая работает в PHP 5. Для этого пасхального яйца нужно, чтобы было включено расширение Suhosin (оно используется для усиления безопасности PHP). Сигнатура такая: SUHO8567F54-D428-14d2-A769-00DA302A5F18. Результатом добавления её в запрос является картинка с тремя иероглифами, которые переводятся с корейского примерно как защитник или ангел-хранитель.
Хорошо, когда люди, разрабатывающие серьёзные вещи, имеют чувство юмора и позволяют себе безобидно пошутить. К тому же пасхальные яйца — неплохая вирусная реклама своего продукта (фактически, я сейчас бесплатно рекламирую PHP). Главное здесь для разработчиков — не переусердствовать.
P.S.: Я понимаю, что для некоторых хабровчан описанный факт покажется бородатым и неинтересным, но уверен, что кто-то слышит о пасхальных яйцах в PHP впервые. Лично я узнал обо всём этом совсем недавно, хотя первый мой php-файл был создан около 5 лет назад.
I have been surfing online more than 3 hours today,
yet I never found any interesting article like yours. It is pretty worth enough for
me. Personally, if all website owners and bloggers made good content as you did, the net will
be much more useful than ever before.
Watch Jav Online Free - JavMama - 25-09-19 22:09:25
It's enormous that you are getting thoughts from this article as well as from our dialogue made
at this place.
I simply could not go away yur site prior to suggewting that
I really loved the standard information an individual supply on your guests?
Is going to be back ceaselessly inn order to check out neww posts
www.okxmoveis.com.br - 23-06-19 17:06:05
I think that is one of the so much significant information for me.
And i am happy studying your article. However wanna statement on few common issues,
The website style is perfect, the articles is really nice :
D. Good process, cheers
geek squad jobs - 3-06-19 14:06:56
My spouse and I stumbled over here coming from a different page and thought
I might as well check things out. I like what I see so now
i am following you. Look forward to looking at your
web page for a second time.
extraproxies.com - 2-05-19 16:05:24
What's up mates, its impressive paragraph regarding teachingand fully defined, keep it up all tthe time.
http://www.pm.ac.th/articles/ - 26-04-19 08:04:48
Hi, I read your blogs regularly. Your story-telling style is awesome,
keep it up!
Watch Jav Online Free - JavFree - 23-04-19 20:04:52
Ahaa, its nice dialogue about this post at this place at this web site, I have read
all that, so now me also commenting here.
woodiskingser - 22-04-19 14:04:23
ich habe ein Problem mit diese
wnyt blog - 21-04-19 22:04:00
It's remarkable in favor of me to have a web site, which is beneficial
for my know-how. thanks admin
[url=http://theprettyguineapig.com/amoxicillin/]Amoxicillin Without Prescription[/url] Amoxicillin No Prescription jtk.tmyi.mastersite.org.ua.mvn.us http://theprettyguineapig.com/amoxicillin/
Watch Jav Online Free - JavMama - 7-04-19 10:04:16
Wow, this post is nice, my sister is analyzing these things,
therefore I am going to let know her.
Loss oss polares se valen del hielo marino para
cazar.
Watch Jav Online Free - JavFree - 19-02-19 09:02:55
Good web site you have got here.. It's hard to find high quality writing like yours these days.
I really appreciate individuals like you! Take care!!
hoteles baratos en guadalajara - 30-01-19 21:01:32
Centro Guadalajara, C.P. 44100 Jalisco, M_xico.
Streaming Hentai Online Free - 7-12-18 22:12:17
I was recommended this website by my cousin.
I am not sure whether this post is written by him as nobody else know such detailed about my problem.
You're incredible! Thanks!
minecraft - 16-09-18 10:09:09
Heya i'm for the first time here. I found this board
and I find It truly useful & it helped me out a lot. I hope to give something back and help
others like you helped me.
Xe-88 free register - 13-11-19 14:11:07
I have been surfing online more than 3 hours today,
yet I never found any interesting article like yours. It is pretty worth enough for
me. Personally, if all website owners and bloggers made good content as you did, the net will
be much more useful than ever before.