[ Miroslav Ćurčić @ 07.11.2006. 17:45 ] @
Kad god možete, izbegavajte upotrebu $_SERVER['PHP_SELF'] promenljive.

Postoji mogućnost XSS napada zbog propusta kojim će ona sadržavati i dodatni tekst ako je on u browser-u dodat iza URLa kao poddirektorijum (domain/dir/script.php/danger_code).

Njena najčešća primena je u form/action pokazivanju na samog sebe:
Code:

<?php
$Self= $_SERVER['PHP_SELF'];
?>
<form action="<?=$Self?>" method="POST">
<input type="submit">
</form>

skript snimite kao test.php a u browser-u unesite:
test.php/%22%3E%3Cscript%3Ealert('xss');%3C/script%3E

Isprobao sam ovo na par platformi i negde je radilo a negde ne. Tamo gde je sistem konfigurisan da escape-uje URL ovaj nastavak će dobiti nepravilan javascript kod (imaće viška "\" znakova).

Iskoristi ovaj propust možda neće biti lako ali bolje je u skriptama upotrebiti alternative, recimo:
$Self= basename((isset($_SERVER['SCRIPT_NAME'])) ? $_SERVER['SCRIPT_NAME'] : $_SERVER['SCRIPT_FILENAME']);