$_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.

rafifdwhots on Monday, February 23, 2026 at 12:51

Рукава высокого давления из нержавеющей стали незаменимы там, где требуется гибкость соединения и устойчивость к экстремальным условиям. Каталог на <a href=https://iz-medi.ru/>https://iz-medi.ru/</a> включает металлорукава РВД диаметром до 250 мм, гибкие подводки от 1/2 до 2 1/2 дюйма и шаровые краны всех типов: муфтовые, фланцевые, под приварку, трёхходовые. Нержавеющая сталь обеспечивает долговечность в системах водоснабжения, отопления и промышленных установках. Звоните +7 499 390-62-89 для консультации по выбору.

mememsSib on Monday, February 23, 2026 at 12:58

Vous cherchez Savaspin Casino ? Retrouvez notre guide complet du site officiel <a href=https://savaspinofficiel-fr.com/>https://savaspinofficiel-fr.com/</a> (mis a jour en 2026). La collection comprend plus de 1 000 machines a sous, dont des classiques, des machines a sous video et des jackpots progressifs. Le site officiel de Savaspin Casino est le meilleur choix en France.

rohexbog on Monday, February 23, 2026 at 13:19

Нейросеть Hailuo AI предлагает революционное решение для создания профессиональных видеороликов из текстовых описаний за считанные минуты. Платформа полностью адаптирована для российских пользователей с русским интерфейсом и оплатой картами отечественных банков. На сайте <a href=https://hailuo-ai.online/>https://hailuo-ai.online/</a> доступна генерация видео в разрешении до 1080P длительностью от шести до десяти секунд с реалистичными движениями. Мощная AI-модель превращает текстовые промты в качественные ролики без очередей и длительного ожидания, среднее время создания составляет полторы минуты.

nosirked on Monday, February 23, 2026 at 13:22

Ландшафтное ателье в Санкт-Петербурге предлагает полный спектр услуг по проектированию и благоустройству загородных участков с 23-летним опытом работы. Эксперты разрабатывают эксклюзивные дизайн-проекты совместно с владельцами, принимая во внимание образ жизни и персональные пожелания заказчиков. На платформе <a href=https://sakura.spb.ru/>https://sakura.spb.ru/</a> представлены примеры выполненных объектов, прайс-листы на работы и каталог растений для озеленения территорий. Организация реализует посадку растений, создание прудов, тропинок, рокариев и предоставляет техническое сопровождение территорий.

tukegHom on Monday, February 23, 2026 at 16:33

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

hugacsycle on Monday, February 23, 2026 at 23:20

Информационный ресурс о вариантах заработка и создании бизнеса публикует практические материалы для повышения финансовых результатов. Пользователи находят пошаговые инструкции по накоплению капитала, управлению личными финансами и запуску собственного дела. На платформе <a href=https://kakzarabotkin.ru/>https://kakzarabotkin.ru/</a> собраны проверенные методики заработка в интернете, аналитика ставок на спорт и экспертные материалы по страхованию бизнеса. Специалисты выкладывают современные материалы об определении рабочего капитала и методах расширения организаций для руководителей.

Add a comment

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

Comment: