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

mecicdEmoft on Saturday, March 28, 2026 at 20:48

Гостевой дом WE REST в Подмосковье — это премиум-пространство для тех, кто ценит настоящий отдых за городом. Продуманные до мелочей дома, живая природа Пушкинского округа, активности на воде и костровые вечера — формула настоящего отдыха без компромиссов. Забронировать дом посуточно и узнать актуальные даты можно на <a href=https://we-rest.ru/>https://we-rest.ru/</a> — бронирование онлайн занимает пару минут. Территория закрытая, тихая, с чётко прописанными правилами проживания для комфорта каждого гостя.

rowuAbsok on Saturday, March 28, 2026 at 21:42

«Бумажный дом» — испанский сериал, превратившийся в настоящий мировой феномен криминального жанра. Таинственный Профессор вербует группу под именами городов с одной целью: захватить Королевский монетный двор и напечатать миллиарды, не прикасаясь к чужим средствам. Ищете <a href=https://bumazhnyy-dom-smotret.online/>бумажный дом все серии</a>? Все серии доступны на bumazhnyy-dom-smotret.online в отличном качестве с озвучкой LostFilm и других студий. Напряжение не спадает ни на минуту: заложники перестают быть безликой массой, грабители обнаруживают в себе человечность, а противоборство Профессора с инспектором становится партией в шахматы, где ошибка стоит жизни. 50 эпизодов пяти сезонов держат у экрана без остановки.

yudiebiall on Sunday, March 29, 2026 at 00:16

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

juwaddPhich on Sunday, March 29, 2026 at 00:20

«Ведьмак» — культовый американо-польский фэнтези-боевик, снятый по знаменитому книжному циклу. Геральт из Ривии — хладнокровный мутант и профессиональный охотник на монстров — балансирует между миром людей и царством тварей. Его история переплетается с судьбами чародейки Йеннифэр и принцессы Цири, чья таинственная кровь меняет расклад сил на всём континенте. Ищете <a href=https://vedmak-smotret.online/>сериал ведьмак</a>? Все 33 серии четырёх сезонов доступны на vedmak-smotret.online с профессиональной озвучкой и без регистрации. Динамичные поединки, глубокие моральные конфликты и искусно выстроенные политические интриги ставят сериал в один ряд с лучшими образцами фэнтези.

zuhintig on Sunday, March 29, 2026 at 00:35

Британский «Шерлок» 2010 года — дерзкая и точная адаптация классики Конан Дойла, действие которой перенесено в современный Лондон со смартфонами, интернетом и медийным шумом. Знаменитый консультирующий детектив с феноменальными аналитическими способностями раскрывает запутанные преступления вместе с напарником-ветераном — их тандем и есть главная ось повествования. Каждый из 13 эпизодов по хронометражу и насыщенности не уступает полному метру: закрученный сюжет, блестящие реплики и уникальная визуализация дедуктивных цепочек героя. Ищете <a href=https://sherlok-smotret.online/>шерлок смотреть онлайн</a>? Все сезоны в отличном качестве собраны на sherlok-smotret.online — смотри бесплатно без регистрации. Захватывающий детектив, острый триллер и изысканный британский юмор — всё это в одном сериале с рейтингом 9.0 из 10.

judobelslurl on Sunday, March 29, 2026 at 02:33

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

Add a comment

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

Comment: