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


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.

cisaqtMof on Wednesday, January 14, 2026 at 03:01

Организация пассажирских перевозок в Анапе требует профессионального подхода и надежной техники. Компания «Анапа Транспорт» зарекомендовала себя как ответственный перевозчик, предоставляющий услуги аренды автобусов, микроавтобусов и минивэнов с опытными водителями. Более 5000 клиентов доверили свои поездки этой компании — от школьных экскурсий до корпоративных мероприятий и свадеб. Круглосуточная диспетчерская служба, страхование ответственности и своевременная подача транспорта делают сотрудничество комфортным. Узнать больше о тарифах и забронировать автобус можно на <a href=https://anapa-transport.ru/>https://anapa-transport.ru/</a> где представлен весь автопарк компании. Честные цены, чистые салоны и исправная техника — вот что отличает профессионалов своего дела от случайных перевозчиков на рынке транспортных услуг Анапы.

proflinksgrazy on Wednesday, January 14, 2026 at 06:35

Ищете <a href=https://proflinks.ru/>заказать ссылки для продвижения</a>? Ресурс https://proflinks.ru/ представляет экспертное продвижение интернет-проектов с помощью установки вечных надежных ссылок с показателем ИКС от 10. Сервис действует без перерывов, предоставляя стремительное исполнение проектов по разумной стоимости. Клиенты отмечают стабильный прирост внешних ссылок, рост показателей DR и ИКС, а также увеличение трафика уже через несколько дней после размещения. Платформа представляет разнообразные тарифы: от якорных и безъякорных линков до краудовых кампаний и оптимизации пользовательских метрик для продвижения в Яндекс и Гугл.

AnthonyEmurf on Wednesday, January 14, 2026 at 10:24

<a href=https://sonabet.pro/>sonabet.pro</a>

rydossMus on Wednesday, January 14, 2026 at 11:12

Качественные банные веники — основа полноценного оздоровительного отдыха и традиционных русских парных процедур. Магазин предлагает отборную продукцию из березы, дуба и эвкалипта по доступным ценам. Товары проходят тщательный отбор и соответствуют стандартам экологической безопасности для использования. Удобная доставка через пункты выдачи Яндекс Маркета работает по всей Москве и Подмосковью. Подробный каталог и актуальные акции доступны на странице <a href=https://www.parvenik.ru/>https://www.parvenik.ru/</a> для всех покупателей. Оптовые заказы обрабатываются с дополнительными скидками и индивидуальными условиями сотрудничества.

vakatSag on Wednesday, January 14, 2026 at 14:58

Учебный центр парикмахерского искусства Юлии Бурдинцевой в столице организует программы с практикой на живых моделях уже с четвёртого учебного дня. Ищете <a href=https://j-center.ru/nachalo-zanyatij/>курсы парикмахеров</a>? На j-center.ru представлены программы для начинающих и практикующих мастеров: универсальные курсы от 9000 рублей, колористика за 36000 рублей, мужские стрижки и повышение квалификации. Слушатели накапливают незаменимый профессиональный багаж в условиях работающего салона, постигают дамские и мужские модельные стрижки, тонирование, вечерние укладки и передовые технологии. По окончании выдаётся диплом, а лучшим выпускникам предлагается трудоустройство в салоны Москвы и области.

paxuhprofe on Wednesday, January 14, 2026 at 17:34

Доска бесплатных объявлений Напики объединяет продавцов и покупателей по всей России в удобном онлайн-формате. На <a href=https://napiki.ru/>https://napiki.ru/</a> представлено более 3800 объявлений в 1553 рубриках: недвижимость, транспорт, работа, товары для дома, бытовая электроника и услуги. Ресурс разрешает гражданам и организациям выкладывать предложения безвозмездно, а платные инструменты продвижения форсируют сбыт. Посетители обнаруживают привлекательные варианты в родном городе и близлежащих территориях, а открытие персонального каталога укрепляет репутацию предприятия среди заказчиков.

waxyjFramb on Wednesday, January 14, 2026 at 21:11

<a href=https://www.servisemaster.ru/>https://www.servisemaster.ru/</a> - Ремонт стиральных машин, Ремонт стиральных машин в Москве, Ремонт стиральных машин недорого, Ремонт стиральных машин на дому, Ремонт стиральных машин на дому в Москве, Ремонт стиральных машинок.

pisixopag on Thursday, January 15, 2026 at 01:07

Ищете <a href=https://4israel.co.il/ru/jobs/>вакансии в Израиле</a>? Посетите сайт 4israel.co.il/ru/jobs/ и вы найдете большое количество предложений. Легко определите округ Израиля и городской центр, а ресурс продемонстрирует вам все актуальные предложения о занятости. Трудоустройство в Израиле это множество бесплатных предложений - вы точно найдете для себя должность или размещайте свои объявления и получайте ответы соискателей. Наш сайт максимально функциональный для нахождения вакансий и работников. Подробнее на сайте.

Add a comment

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

Comment: