| « 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
JosephSot on Friday, February 6, 2026 at 05:46
This read connects concepts in a way that finally makes sense <a href=https://digideal.pk/author/arleenfender80/>https://digideal.pk/author/arleenfender80/</a>
gegycycrync on Friday, February 6, 2026 at 07:27
Заходите на сайт <a href=https://cs2case.win/>https://cs2case.win/</a> и вы сможете открыть лучшие кейсы CS & CS:GO. Открытие кейсов КС ГО и КС2 осуществляется с моментальным выводом скинов себе в Steam. Посмотрите нашу подборку кейсов на всевозможные тематики. У нас ежедневно можно найти бесплатные кейсы, а также эксклюзивные, не представленные больше нигде!
Kevinton on Friday, February 6, 2026 at 10:43
The structure makes it very easy to follow along step by step <a href=http://cloud4.co.kr/bbs/board.php?bo_table=data&wr_id=656659>http://cloud4.co.kr/bbs/board.php?bo_table=data&wr_id=656659</a>
ThomasMep on Friday, February 6, 2026 at 11:14
<a href=https://di-project.studio/>заказать веб</a>
gexusmek on Friday, February 6, 2026 at 11:26
Raxwell обеспечивает поставки промышленного оборудования, электроники и комплектующих для заводов и фабрик во всех регионах РФ. В каталоге более 40 миллионов позиций — сенсоры, ПЛК, пневматика, гидравлика, двигатели, измерительные приборы от 40 тысяч мировых брендов. Заказать продукцию можно на <a href=https://raxwell.ru/>https://raxwell.ru/</a> с доставкой в любой регион и двухлетней гарантией. Менеджеры на связи в любое время, содействуют в выборе комплектующих и обработке запросов.
jazinomini on Friday, February 6, 2026 at 13:53
Металлорукава и гибкая подводка из нержавеющей стали — надёжное решение для систем водоснабжения и отопления, которое служит десятилетиями. Компания предлагает рукава высокого давления (РВД), шаровые краны и фитинги всех популярных диаметров. Переходите на <a href=https://iz-nerzhaveyki.ru/>https://iz-nerzhaveyki.ru/</a> и выбирайте подводку от 1/2 дюйма (15 мм) до 2 дюймов (50 мм), а также РВД с различными типами соединений: резьба, фланцы, под приварку. Нержавейка выдерживает высокое давление и агрессивные среды. Доставка по Москве.
xovyjrdrag on Saturday, February 7, 2026 at 00:33
Производство стальных профилей требует точности и современного оборудования, а компания Waltzprof предлагает качественные решения для фасадных и перегородочных систем. В каталоге на <a href=https://waltzprof.com/>https://waltzprof.com/</a> представлены профили из оцинкованной и нержавеющей стали: ВП165, ВП150, ВП250, ВП372 с терморазрывом, Т-образные профили для ворот, штапики, уплотнители и автоматические пороги Smart. Также в ассортименте скрытые петли и фурнитура для дверей. Звоните +7 (911) 087-65-05 для консультации по выбору.
JamesErego on Saturday, February 7, 2026 at 03:48
Really informative piece — take a look <a href=http://wap.fortboyard2012forum.4adm.ru/posting.php?mode=post&f=27&sid=9ebc2ddb9ad9b0ba0c82fb951fec035d>http://wap.fortboyard2012forum.4adm.ru/posting.php?mode=post&f=27&sid=9ebc2ddb9ad9b0ba0c82fb951fec035d</a>
daverRoura on Saturday, February 7, 2026 at 12:32
Выбрать идеальный букет для девушки — это искусство, которое требует внимания к деталям и знания её предпочтений. Цветочный салон «Флорион» предлагает широкий ассортимент композиций, от классических роз до экзотических орхидей. На <a href=https://www.florion.ru/catalog/cvety-devushke>https://www.florion.ru/catalog/cvety-devushke</a> вы найдёте букеты на любой случай: романтическое свидание, день рождения или просто знак внимания. Профессиональные флористы помогут подобрать цветовую гамму и стиль, которые точно покорят её сердце.
teluguMaR on Saturday, February 7, 2026 at 13:24
Компания «ВЕЛЕС ИНДАСТРИАЛ» реализует пиломатериалы собственного производства с полным циклом от заготовки северной древесины до выпуска готовой продукции. На складе в Мытищах представлен широкий ассортимент обрезной доски, бруса, вагонки, фанеры и террасной доски из сосны, ели и лиственницы по ценам от 11500 рублей за кубометр. Подробный каталог и условия доставки по Москве и области смотрите на <a href=https://pilomaterialy-msk.ru/>https://pilomaterialy-msk.ru/</a> Наличие собственных лесозаготовок на севере и высокотехнологичных линий дает возможность продавать качественные материалы по ценам ниже рынка.
wopipthJef on Saturday, February 7, 2026 at 16:58
Рукава высокого давления из нержавеющей стали незаменимы там, где требуется гибкость соединения и устойчивость к экстремальным условиям. Каталог на <a href=https://iz-medi.ru/>https://iz-medi.ru/</a> включает металлорукава РВД диаметром до 250 мм, гибкие подводки от 1/2 до 2 1/2 дюйма и шаровые краны всех типов: муфтовые, фланцевые, под приварку, трёхходовые. Нержавеющая сталь обеспечивает долговечность в системах водоснабжения, отопления и промышленных установках. Звоните +7 499 390-62-89 для консультации по выбору.
gibupsMex on Saturday, February 7, 2026 at 18:52
Буковина 24/7 - <a href=https://gazeta-bukovyna.cv.ua/>https://gazeta-bukovyna.cv.ua/</a> . Новини Чернівців і Чернівецької області. Довідкова, та корисна інформація про місто.
url on Sunday, February 8, 2026 at 00:00
After looking into a handful of the blog posts on your website, I really like your technique of blogging.
I bookmarked it to my bookmark website list and will be
checking back in the near future. Please check out my web site as well and tell me how you feel.
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.