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


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.

qokezunoda on Monday, December 15, 2025 at 03:20

<a href=https://slokkasucouple.com/>https://slokkasucouple.com/</a> にアクセスしてください。ショッピング、ゲーム、スポーツ、暗号通貨、日本旅行ガイドなど、あらゆる情報が掲載された総合リソースです。記事にコメントを残したり、ディスカッションに参加したりすることもできます。

igibufTes on Monday, December 15, 2025 at 04:39

Организация «Денорс» в Донецке занимается профессиональным оснащением защитных систем объектов с предложением всех этапов работ от разработки до сервисного обслуживания. Ищете <a href=https://denors.ru/product/bolid-rgg-1622-versiya-2-gibridnyj-videoregistrator/>bolid rgg-1622 версия 2 гибридный видеорегистратор</a>? На сайте denors.ru представлены решения по установке пожарных и охранных сигнализаций, систем видеонаблюдения, домофонов и контроля доступа для бизнеса, государственных учреждений и частных клиентов. Эксперты используют сертифицированную технику, гарантируют качественную установку со страховкой до 3 лет и круглосуточное сервисное сопровождение.

telegynDywob on Monday, December 15, 2025 at 09:03

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

JasonMug on Monday, December 15, 2025 at 17:18

Интернет на даче был нужен срочно, и мобильное решение оказалось самым быстрым. Специалисты приехали оперативно и всё установили. Сигнал усилили антенной. Интернет работает стабильно. Отличный сервис и результат - <a href=https://podklychi.ru/>https://podklychi.ru/</a>

yoheriRal on Monday, December 15, 2025 at 17:42

С 2007 года Владимир Савчук как частный SEO специалист реализует проекты по продвижению веб-ресурсов в Google и Bing. Ищете <a href=https://private-seo.com/ru>консультации по продвижению сайтов</a>? На платформе private-seo.com/ru/ представлен полный спектр услуг по оптимизации: технический аудит, разработка индивидуальной стратегии продвижения, локальное SEO и работа с новыми технологиями GEO. Личное ведение проектов без агентств гарантирует прямую коммуникацию и оперативную адаптацию к требованиям бизнеса, о чём свидетельствует лояльность 80% клиентов на протяжении 5-10 лет.

hupikjoult on Monday, December 15, 2025 at 18:56

Ищете <a href=https://sakura-pitomnik.ru/>дизайн ландшафта сада</a>? Ландшафтное ателье sakura.spb.ru более 23 лет создает уникальные ландшафтные проекты в Санкт-Петербурге и Ленинградской области, предлагая полный спектр услуг от проектирования до сервисного обслуживания участков. Фирма специализируется на создании практичных пространств: входных групп, зон релаксации, игровых и спортивных территорий, площадок для барбекю с ориентацией на образ жизни владельца. В собственном садовом центре выращивается более 1000 видов растений, что позволяет реализовывать проекты любой сложности под ключ.

piqocncot on Monday, December 15, 2025 at 20:49

Посетите <a href=https://accs-shop.com/>https://accs-shop.com/</a> - это Магазин аккаунтов №1 с многолетним опытом работы, в котором вы сможете купить аккаунты в широком ассортименте. Посмотрите категории - там вы обязательно найдете для себя необходимый товар. Каждый аккаунт проходит тщательную проверку перед продажей, вы можете быть уверены в качестве, а поддержка работает быстро!

zyhofutal on Monday, December 15, 2025 at 22:28

Заходите на страницу сайта <a href=https://www.chitai-gorod.ru/catalog/toys/lego-115391>https://www.chitai-gorod.ru/catalog/toys/lego-115391</a> и вы сможете купить Конструкторы LEGO в широком ассортименте, а также узнать как выбрать конструктор LEGO для ребёнка. Посмотрите популярные серии конструкторов LEGO и вы обязательно найдете то что вам понравится!

fufysdTharp on Monday, December 15, 2025 at 23:34

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

hipufSoync on Tuesday, December 16, 2025 at 01:16

<a href=https://g4sky.ru/>https://g4sky.ru/</a> - интернет-магазин для поклонников игр, аниме, кино, сериалов и музыки. Здесь вы найдёте уникальный мерч, хендмейд, фигурки и реквизит. Присоединяйтесь!

Add a comment

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

Comment: