$_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 (10)


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% для корпоративных пользователей.

Add a comment

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

Comment: