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


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.

ziripoAbeme on Wednesday, February 25, 2026 at 05:09

Платформа авто сравнений <a href=https://auto.ae/catalog/>https://auto.ae/catalog/</a> предлагает анализ поколений и комплектаций для всего рынка. Сравните модели, поколения, технические характеристики и актуальные рыночные цены в одном удобном сервисе. Мы собираем данные о мощности двигателя, расходе топлива, трансмиссии, оснащении и безопасности, чтобы вы могли объективно оценить преимущества каждого автомобиля. Актуальные цены на рынке помогают выбрать оптимальный вариант с учётом бюджета и целей — будь то покупка нового авто или выгодное приобретение с пробегом. Выбирайте осознанно — наш сервис делает процесс выбора автомобиля прозрачным, информативным и максимально удобным для каждого покупателя.

nulojrar on Wednesday, February 25, 2026 at 06:19

Онлайн-магазин «ЭЛЕК» занимается реализацией морской электротехники, кабеля и запчастей с одобрением РРР и РМРС для верфей и судоремонтных организаций. В каталоге представлено судовое освещение, выключатели-автоматы, контакторы, сигнальные фонари, трансформаторы, реле защиты и кабели всех типов со складским запасом. Ищете <a href=https://shop.elekspb.ru/product-category/provod-mg/>провод мг характеристики</a>? Оформить заказ и ознакомиться с полным ассортиментом можно на shop.elekspb.ru Компания гарантирует быструю комплектацию заказов, транспортировку в любой регион страны и экспертные рекомендации при выборе техники.

ciniggot on Wednesday, February 25, 2026 at 09:51

Каталог компании Мото-ДВ представляет широкий ассортимент мототехники и электротранспорта для различных целей использования. Покупатели могут выбрать квадроциклы, питбайки, электросамокаты и аксессуары с подробными техническими характеристиками и фотографиями. На странице <a href=https://promindex.ru/izhevsk/companies/100000233-moto-dv/catalog>https://promindex.ru/izhevsk/companies/100000233-moto-dv/catalog</a> размещены актуальные цены и информация о наличии моделей на складе. Возможность оформления покупки в кредит без первоначального взноса делает технику доступной широкому кругу покупателей. Консультации специалистов помогают подобрать оптимальный вариант транспорта под конкретные требования.

DonnellSwinc on Wednesday, February 25, 2026 at 10:12

Всем общий привет!
Нашел стабильный линк в онион.
Работает без ВПН и тормозов.
Залетать сюда:

<a href=https://motifri.com/>kraken актуальные ссылки</a>

Вчера забирал, все ровно.

fyluxsZic on Wednesday, February 25, 2026 at 12:21

Ищете почтовые аккаунты? Посетите <a href=https://mailtop.shop/>https://mailtop.shop/</a> и вы сможете купить почты от различных провайдеров от 1 штуки. Ознакомьтесь с нашим ассортиментом - он вам понравится. Выбирайте качественные почтовые ящики у нас. Подробнее на сайте.

kasekplesk on Wednesday, February 25, 2026 at 13:25

Развивающий центр в Красногорске концентрируется на помощи детям с нарушениями от полутора до семи лет через ABA-терапию. Специалисты помогают детям с РАС, ЗРР, алалией и другими особенностями развития научиться говорить и взаимодействовать с окружающим миром. На платформе <a href=https://aba-krasnogorsk.ru/>https://aba-krasnogorsk.ru/</a> родители могут записаться на консультацию к логопедам-дефектологам и нейропсихологам для коррекции речи и поведения. Организация совершенствует умения взаимодействия, убирает приступы гнева и тревожность, тренирует житейские навыки без диагностических ярлыков.

Add a comment

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

Comment: