| « Displaying Chinese UTF-8 characters in gvim on Windows | Prosper's insecure bank account management feature » |
$_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:
It seems odd that PHP would refer to something likeThe filename of the currently executing script, relative to the document root.
/foo.php/"><script>alert('hello');</script>as a "filename." - It's pretty bizarre default behavior that PHP will execute
/foo.phpfor a request of/foo.php/bar/baz.
Comments
dodekmex on Monday, April 20, 2026 at 19:10
Drinks Dubai Delivery — сервис доставки алкоголя в Дубае для туристов и резидентов, которым нужен быстрый и надёжный способ получить напитки без лишних хлопот. В каталоге представлены виски, водка, шампанское, вино, джин, ром, текила, коньяк, пиво и другие позиции — включая Absolut, Bacardi, Glenfiddich и Aperol. Ищете <a href=https://delivery-dubai-now.com>алкоголь в дубае с доставкой</a>? Оформить заказ можно на delivery-dubai-now.com через Telegram или WhatsApp — просто и удобно. Курьер привозит заказ быстро и дискретно непосредственно к месту вашего пребывания.
ciqohellspuse on Monday, April 20, 2026 at 19:36
Выпускной — один из тех редких дней, которые хочется сохранить в каждой детали: взгляды, смех, слёзы радости и первые шаги во взрослую жизнь. Именно поэтому так важно доверить съёмку профессионалам, которые умеют не просто фотографировать, а рассказывать истории. Студия <a href=https://profvideo.ru/vypusknoj/>https://profvideo.ru/vypusknoj/</a> предлагает комплексную фото и видеосъёмку выпускного в Москве и области под ключ: последний звонок, торжественная часть, банкет, монтаж клипа и фильма о классе. Команда берёт на себя всё — от тайминга до сдачи готового материала в строго оговорённые сроки по договору. Никаких сюрпризов, только результат.
xuxophbus on Monday, April 20, 2026 at 20:41
«Фарго» — знаковый американский сериал, превращающий тихую провинцию Миннесоты в эпицентр кровавых и абсурдных событий. Один случайный незнакомец разрушает хрупкий покой маленького городка, втягивая обычных людей в цепь преступлений. Неудачливый страховой агент, харизматичный манипулятор и принципиальная женщина-детектив — каждый тянет в свою сторону в этой мастерски выстроенной истории. Ищете <a href=https://fargo-smotret.net/>фарго все серии</a>? На fargo-smotret.net доступны все 51 серия пяти сезонов в высоком качестве с профессиональными озвучками. Тонкий чёрный юмор, глубокая криминальная драма и повседневный абсурд возводят «Фарго» на вершину лучших сериалов современности.
wineliZes on Tuesday, April 21, 2026 at 00:03
«Самрай» — московская типография, выполняющая полиграфию любой сложности: от визиток и листовок до буклетов, брошюр, книг, плакатов, баннеров, чертежей и фотографий. Компания предлагает широкоформатную печать, производство наклеек, календарей, бейджей, пластиковых карт и табличек, а также нанесение на футболки и кружки. Ищете <a href=https://samray.ru/pechat-na-futbolkah/>сублимационная печать на футболках</a>? На samray.ru представлен полный прайс и технические требования к макетам. Компания самостоятельно выполняет все этапы послепечатной обработки: ламинацию, биговку, тиснение, вырубку и твёрдый переплёт — без субподрядчиков.
kaagisTum on Tuesday, April 21, 2026 at 00:03
«Мы все мертвы» — южнокорейский хоррор Netflix 2022 года: привычная школьная жизнь в считаные часы рушится под натиском зомби-апокалипсиса. Вспышка, начавшаяся в школьной лаборатории, стремительно превращает и учеников, и учителей в агрессивных зомби. Ищете <a href=https://my-vse-mertvy-smotret.net/>мы все мертвы смотреть онлайн</a>? Смотреть сериал онлайн бесплатно во всех озвучках можно на my-vse-mertvy-smotret.net — все 12 серий в высоком качестве. Выжившие подростки заперты в изолированном здании без связи с внешним миром и вынуждены принимать жестокие решения, чтобы продержаться ещё один день. Проект жёстко соединяет зомби-хоррор с подростковой драмой: любовь, предательство и моральный выбор сталкиваются с непрекращающимся ужасом по ту сторону двери.
wujexWex on Tuesday, April 21, 2026 at 01:53
ウェブサイト <a href=https://www.sum77-debatable.com/>https://www.sum77-debatable.com/</a> にアクセスすると、コムドット 事務所 どこ, シルク 身長, ennちゃん, 東海オンエア スタジオコムドット 事務所 どこシルク 身長 ennちゃん 東海オンエア スタジオ コムドット事務所
xariwacaps on Tuesday, April 21, 2026 at 02:18
Мебельная фабрика «Подольск» специализируется на изготовлении кухонь и шкафов-купе по индивидуальным размерам для жителей Москвы и Московской области. Для изготовления используются проверенные материалы и качественная фурнитура гарантирующие долгий срок эксплуатации. Компания берёт на себя все этапы работы: замер помещения, разработку проекта, производство и монтаж готовой мебели. Партнёром фабрики по поставке оборудования выступает <a href=https://mf-podolsk.ru/>https://mf-podolsk.ru/</a> — надёжный поставщик металлообрабатывающих станков и инструментов. Заказать мебель можно через онлайн-конструктор прямо на сайте компании.
kusopwGew on Tuesday, April 21, 2026 at 05:11
กำลังมองหา xo, xo slot, xo, xo, xo, xo, xo อยู่ใช่ไหม? เยี่ยมชมเว็บไซต์อย่างเป็นทางการได้ที่ <a href=https://slotxo-auto.net/>https://slotxo-auto.net/</a> - ที่นั่นคุณจะพบข้อมูลครบถ้วนเกี่ยวกับอุตสาหกรรมเกม วิธีเริ่มต้นเล่น ถอนเงิน และรับโบนัส
howebWaiva on Tuesday, April 21, 2026 at 06:22
Looking for <a href=https://emodzen.com/business/acquiring-for-business/>secure payment gateway</a>? Visit emodzen.com to explore our services, where you can process business transactions, manage personal transfers, open accounts and issue cards worldwide, accept payments globally, and monitor performance in real time. Find out what makes Emodzen Acquiring the preferred choice for a growing number of clients around the world — all the details are on our website.
kemeftwrele on Tuesday, April 21, 2026 at 11:13
Ищете центр натурального оздоровления и фермерских продуктов в Екатеринбурге? Посетите сайт <a href=https://lavkalekar.ru/>https://lavkalekar.ru/</a> Лавка Лекаря - у нас в большом ассортименте фермерские продукты и здоровое питание без консервантов, а также травяные сборы, масла и натуральные средства поддержки здоровья.
momirdig on Tuesday, April 21, 2026 at 13:01
Транссибирская Северо-Западная компания — таможенный брокер в Санкт-Петербурге с 15-летним опытом работы на рынке международной логистики. Под ключ компания выстраивает поставки из Китая, Европы, Турции и Индии — включая таможенное оформление, сертификацию, взаиморасчёты с поставщиками и выбор оптимального маршрута. Ищете <a href=https://transib-sz.ru/>официальный сайт</a>? Подробнее об условиях доставки и актуальных тарифах читайте на transib-sz.ru — здесь можно оставить заявку и получить бесплатный расчёт. Свыше 300 компаний уже работают с этим брокером на постоянной основе, и 98% из них советуют его своим партнёрам. Груз находится под полным контролем на всём пути — от закупки у поставщика до передачи на склад заказчика.
lagicaSmado on Tuesday, April 21, 2026 at 13:03
Отыскать в Дубае качественный алкоголь с оперативной и надёжной доставкой — задача не для каждого поставщика. Ищете <a href=https://storedrinks.com>алкоголь в дубае с доставкой</a>? Storedrinks.com предлагает премиальный ассортимент: виски, коньяк, вино, шампанское, ром, джин, текила и пиво от ведущих мировых брендов. Заказ доставляется за 60 минут непосредственно до двери — тихо и без каких-либо затруднений. Деятельность сервиса полностью лицензирована и ведётся в точном соответствии с нормами ОАЭ. Оптимальный выбор для туристов и резидентов, которым важны качество, скорость и удобство.
xececSpado on Tuesday, April 21, 2026 at 13:07
Строительная бытовка — это не просто временное укрытие на объекте, а полноценное рабочее пространство, от которого зависит комфорт и продуктивность всей бригады. Чтобы не тратить время на поиск надёжного поставщика, достаточно заглянуть на <a href=https://bytovka-stroitelnaya.by/>https://bytovka-stroitelnaya.by/</a> — здесь собран актуальный рейтинг минских компаний, предлагающих бытовки от эконом до премиум-класса. Среди участников каталога — проверенные производители с опытом более восьми лет, гарантией до 12 месяцев и услугой монтажа под ключ. Доставка осуществляется по Минску и всей Беларуси, а выбор охватывает модульные здания, дачные домики и пункты охраны.
gagitulinge on Tuesday, April 21, 2026 at 16:46
Хъюге Хаус — глемпинг нового уровня в горах Краснодарского края, где роскошь встречается с настоящей природой. Уютные домики Куб Хаус и Барн Хаус полностью укомплектованы: мини-кухня, холодильник, душ и телевизор — стоимость от 9 000 рублей в сутки. На территории работают баня с бассейном, мангальная зона и прокат эндуро-мотоциклов. Глемпинг принимает гостей с домашними животными. Ищете <a href=https://hyggehouse23.ru/>турбаза с бассейном</a>? Забронировать домик и узнать подробности можно на hyggehouse23.ru — отдых в горах ещё никогда не был таким комфортным.
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.