Пожалуй, всем известно, что сегодня, 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 лет назад.
Simply desire to say your article is as astounding. The clarity on your put up is simply spectacular and
i can assume you are an expert in this subject. Well together with your permission allow me to seize your feed
to stay up to date with imminent post. Thanks one million and please continue
the rewarding work.
sling tv - 18-01-20 16:01:36
Every weekend i used to visit this web site, as i want enjoyment, as this this site conations in fact fastidious funny stuff too.
sling tv - 17-01-20 02:01:23
Thanks for sharing your info. I really appreciate your efforts and
I will be waiting for your further post thanks once
again.
sling tv - 15-01-20 15:01:40
certainly like your website but you need to take a look at the spelling on quite a few of your posts.
Many of them are rife with spelling issues and I find it very troublesome to tell the truth
then again I'll certainly come back again.
sling tv - 14-01-20 20:01:57
Hi, I do believe this is an excellent website. I stumbledupon it ;) I'm going
to revisit once again since I bookmarked it.
Money and freedom is the greatest way to change, may you be rich and
continue to guide others.
sling tv - 7-01-20 18:01:02
Very soon this site will be famous among all blogging visitors,
due to it's fastidious posts
sling tv - 7-01-20 12:01:29
It's a pity you don't have a donate button! I'd definitely donate to this outstanding blog!
I guess for now i'll settle for book-marking and adding your RSS feed to my Google account.
I look forward to brand new updates and will talk about this site with my Facebook group.
Talk soon!
sling tv - 3-01-20 08:01:04
Thanks for sharing your thoughts on php. Regards
sling tv - 1-01-20 15:01:39
Amazing! This blog looks exactly like my old one! It's
on a totally different topic but it has pretty much the
same layout and design. Excellent choice of colors!
Remarkable! Its really amazing piece of writing, I have got much clear idea about from this
article.
match.com free trial - 29-12-19 13:12:11
hi!,I really like your writing so much! share we keep in touch extra approximately your post on AOL?
I require an expert on this house to solve
my problem. Maybe that's you! Looking forward to look you.
coconut oil - 19-12-19 12:12:54
Pretty! This was an incredibly wonderful article.
Many thanks for supplying this information.
coconut oil - 17-12-19 23:12:50
We're a bunch of volunteers and starting a brand new scheme in our community.
Your site offered us with helpful info to work on. You have performed an impressive
task and our whole community might be thankful to you.
coconut oil - 15-12-19 17:12:12
I was recommended this web site by my cousin. I'm not
sure whether this post is written by him as no one else know
such detailed about my problem. You are amazing! Thanks!
ps4 games - 13-12-19 06:12:52
I've been surfing online greater than 3 hours today, yet I
never discovered any attention-grabbing article like yours.
It's beautiful value enough for me. In my view,
if all web owners and bloggers made good content as you did, the net might be a lot more helpful than ever before.
ps4 games - 12-12-19 11:12:42
I think this is one of the most vital information for me.
And i'm glad reading your article. But wanna remark on some general things, The website style
is perfect, the articles is really great : D.
Good job, cheers
ps4 games - 11-12-19 04:12:00
Great article. I'm facing a few of these issues as well..
quest bars cheap - 9-12-19 10:12:52
Does your website have a contact page? I'm having a tough time
locating it but, I'd like to shoot you an email.
I've got some ideas for your blog you might be interested in hearing.
Either way, great blog and I look forward to seeing it expand over time.
ps4 games - 5-12-19 09:12:07
I read this post fully about the resemblance of newest and earlier technologies, it's awesome article.
quest bars cheap - 4-12-19 03:12:07
Nice blog here! Additionally your website quite a bit up very fast!
What web host are you the usage of? Can I am getting your associate link in your host?
I desire my website loaded up as fast as yours lol
Excellent post. I was checking constantly this blog and I am impressed!
Extremely helpful info particularly the last part :) I care for such
information much. I was looking for this certain info for
a very long time. Thank you and best of luck.
I really like your blog.. very nice colors & theme.
Did you make this website yourself or did you hire someone to do it for you?
Plz respond as I'm looking to design my own blog and would like
to know where u got this from. thanks a lot
Robertagob - 18-02-20 01:02:57
Оочень хороший препарат, побочек вообще небыло
[url=https://india-express.net/shop/190/desc/dasatinib]дазатиниб аспартат 10 конъюгат купить[/url]