$_SERVER['PHP_SELF'] and cross-site scripting

Monday, May 20, 2013


It's tempting to assume that PHP's $_SERVER array mostly contains fields out of the reach of an attacker, since these are "server" variables. However, that's not always the case; in particular, the seemingly innocuous PHP_SELF field can be a vector for cross-site scripting.

For example, consider the following foo.php:

<form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <!-- ...form elements... -->
</form>

If I visit http://www.example.com/foo.php, $_SERVER['PHP_SELF'] will be /foo.php and everything will work correctly.

But what if I visit http://www.example.com/foo.php/"><script>alert('hello');</script> instead? Then the rendered HTML will be:

<form method="POST" action="/foo.php/"><script>alert('hello');</script>">
    <!-- ...form elements... -->
</form>

This allows injection of arbitrary script running under the host site's context, also known as XSS. Two ways to fix this are:

  • Use $_SERVER['SCRIPT_NAME'] instead of $_SERVER['PHP_SELF']. The former is the name of the actual script file and can't normally be manipulated by an attacker.
  • Use htmlspecialchars(), which by default will escape double-quotes and prevent a user-supplied string from breaking out of an HTML attribute context.

By the way, this was pretty surprising behavior to me for two reasons:

  • The documentation of PHP_SELF is misleading: The first sentence says:

    The filename of the currently executing script, relative to the document root.

    It seems odd that PHP would refer to something like /foo.php/"><script>alert('hello');</script> as a "filename."
  • It's pretty bizarre default behavior that PHP will execute /foo.php for a request of /foo.php/bar/baz.

Tags: php, xss, security | Posted at 11:13 | Comments (14)


Comments

David Annis on Wednesday, June 25, 2014 at 06:32

I have used the fact that php will execute /foo.php from a request that contains /foo.php/bar to make search engine friendly URLs because many search engines will not index both wheretodrink.php?answer=bar and wheretodrink.php?answer=home because they fear an infinite set of URLs.

mevovAdjut on Wednesday, March 11, 2026 at 12:09

Промышленная вентиляция и кондиционирование — основа комфортного микроклимата на производстве и в коммерческих помещениях. Компания ВентТехника из Екатеринбурга специализируется на поставке и монтаже вентиляторов серий ВЦ, ВР, ВКР, приточно-вытяжных установок и климатического оборудования. В ассортименте — центробежные, осевые, канальные вентиляторы, тепловые завесы и системы автоматики. Подробный каталог представлен на <a href=https://venttehnica.ru/>https://venttehnica.ru/</a> Грамотный подбор оборудования и профессиональный монтаж обеспечивают эффективную работу систем на долгие годы.

humawzense on Wednesday, March 11, 2026 at 13:21

Завод весоизмерительной техники СХТ выпускает автомобильные электронные весы и строит автоматизированные весовые комплексы под ключ по всей России. Предприятие реализует комплексный подход от производства конструкций до их монтажа, поверки и пусконаладки. Ищете <a href=https://xn--q1aci.xn--p1ai/>карьерные весы</a>? Подробности о продукции и услугах представлены на схт.рф в соответствующих разделах каталога. Организация применяет российское ПО, содержит штатные сервисные команды, техника автономна от зарубежных комплектующих и ограничений.

lejybaler on Wednesday, March 11, 2026 at 14:53

Ищете интересный контент о роботах и робототехнике в России и во всем мире? Посетите сайт <a href=https://roboticsrus.ru/>https://roboticsrus.ru/</a> и вы найдете новые технологии, все о мехатронике, искусственном интеллекте, беспилотниках, дронах, а также все планируемые мероприятия. Обзоры и экспертные новости добавляются постоянно, что позволит вам оставаться в курсе событий. Подробнее на сайте.

Angelgew on Wednesday, March 11, 2026 at 15:46

<a href=https://yapl.ru/>вестибулолог</a>

MarvinLaf on Wednesday, March 11, 2026 at 16:37

<a href=https://yapl.ru/>коррекция стелек формтотикс</a>

becyxdreund on Wednesday, March 11, 2026 at 16:45

Карнавальный костюм превращает любой праздник в яркое событие — будь то детский утренник, новогодняя вечеринка или тематическая фотосессия. Магазин «Карнавал ДВ» в Хабаровске предлагает широкий ассортимент нарядов для детей и взрослых: от классических сказочных персонажей до современных героев. Реальный выбор гораздо шире опубликованного на сайте <a href=https://karnaval-dv.clients.site/>https://karnaval-dv.clients.site/</a> Индивидуальный подход, консультации по WhatsApp и возможность примерки помогают найти идеальный образ для любого мероприятия и порадовать себя и близких.

rihelhDweno on Wednesday, March 11, 2026 at 19:34

Сервис предлагает комплексные решения для обеспечения офисов и домов чистой питьевой водой высокого качества. Удобная система онлайн-заказов позволяет оформить доставку за несколько минут без лишних звонков. Посетите <a href=https://xn--80aaeee1dcbuw.xn--p1ai/>https://xn--80aaeee1dcbuw.xn--p1ai/</a> для ознакомления с полным ассортиментом воды и дополнительного оборудования. Регулярные акции и программа лояльности делают обслуживание выгодным для постоянных клиентов компании.

palopwocky on Wednesday, March 11, 2026 at 19:49

Медицинский центр урологии и андрологии доктора Ониса в Москве оказывает комплексные услуги по выявлению и терапии заболеваний мочеполовой системы у мужчин и женщин с использованием современных европейских протоколов лечения. В клинике ведут прием квалифицированные специалисты высшей категории и кандидаты наук с практическим опытом свыше двух десятилетий, работает лаборатория и кабинеты физиотерапии. Ищете <a href=https://www.onisclinic.ru/>лечение простатита</a>? Ознакомиться с услугами и записаться можно через www.onisclinic.ru круглосуточно онлайн. Врачи выполняют диагностику и лечение воспалений простаты, камней в почках, сексуальных расстройств, мужского бесплодия и патологий мочевого пузыря щадящими хирургическими методами.

bomiyUndus on Thursday, March 12, 2026 at 01:12

VPN-провайдер HubHide специализируется на корпоративных и индивидуальных решениях через VLESS, OpenVPN и WireGuard с пропускной способностью 100 Гбит/с и технологией обхода DPI. Система гарантирует защищенное подключение к бизнес-инфраструктуре, соединение филиалов методом Site-to-Site и конфиденциальность информации через криптографическую защиту. Ищете <a href=https://hubhide.com/ru/>vpn без потери скорости</a>? Ознакомиться с тарифами и заказать решение можно на hubhide.com, где доступны выделенные IP-адреса и бесплатный пробный период. Платформа функционирует при строгой интернет-фильтрации, совместима со всеми операционными системами и обеспечивает доступность 99,9% для корпоративных пользователей.

Ronalddah on Thursday, March 12, 2026 at 03:48

This article adds a fresh perspective that you don’t often see elsewhere <a href=https://workfind.in/profile/abigailroot348>https://workfind.in/profile/abigailroot348</a>

wimucWab on Thursday, March 12, 2026 at 03:54

Центр офтальмологии Светодар в Иваново обеспечивает широкий перечень медицинских услуг по выявлению и лечению глазных болезней у пациентов любого возраста. Клиника проводит лазерную коррекцию методами SMILE PRO, FEMTO-LASIK, хирургическое устранение катаракты, глаукомы, отслоения сетчатки и протезирование глаза. Требуется <a href=https://svetodar.pro/>блефаропластика нижние веки</a>? Записаться на прием можно через svetodar.pro в удобное время. Центр располагает актуальной диагностической техникой и оказывает услуги по ночной коррекции зрения, пластике век и терапии сухости глаз.

fofacruck on Thursday, March 12, 2026 at 04:34

Visit <a href=https://smsbower.app/>https://smsbower.app/</a> and learn how to monetize SIM cards with smsBower. We are a SIM card monetization platform, as well as a marketplace for SMS activations and numbers from around the world, as well as numbers for rent at the best prices. Learn more on the website.

JeffreynAb on Thursday, March 12, 2026 at 04:42

If you're researching this topic, read this <a href=https://lebanonhub.app/blogs/865222/%D0%9A%D0%B0%D0%BA-%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%B2%D1%83%D0%B7-%D0%B8-%D0%BD%D0%B5-%D0%BF%D0%BE%D0%B6%D0%B0%D0%BB%D0%B5%D1%82%D1%8C-%D0%BE-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B8>https://lebanonhub.app/blogs/865222/%D0%9A%D0%B0%D0%BA-%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%B2%D1%83%D0%B7-%D0%B8-%D0%BD%D0%B5-%D0%BF%D0%BE%D0%B6%D0%B0%D0%BB%D0%B5%D1%82%D1%8C-%D0%BE-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B8</a>

Add a comment

Name:
Email: (optional, not displayed to public)
URL: (do not fill this in — leave blank!)

Comment: