Jo, det är sårbart. Jag kan trigga skriptet genom att bara kopiera din kod. Kolla i källkoden av den genererade sidan för att se hur det tolkas.
Anropar jag `http://localhost/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E`, där `test.php` har innehåll:
<!doctype html>
<meta charset="utf-8">
<title>Test</title>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
så får jag pop-upen att visas. Källkoden för det renderade dokumentet blir:
<!doctype html>
<meta charset="utf-8">
<title>Test</title>
<form method="post" action="/test.php/"><script>alert('hacked')</script>">
Det är mig veterligen en anledning till att `$_SERVER['PHP_SELF']` generellt inte är rekommenderad att använda överhuvudtaget: använd `$_SERVER['SCRIPT_NAME']` i stället, där det går (vilket är mer eller mindre överallt — det är fritt att komma med motexempel ).
Notera också att en tom `action` på ett formulär automatiskt reflekterar tillbaka till nuvarande dokument, så det är sällan skriptnamnet behöver tas fram överhuvudtaget. En länk likt `<a href="?a=katt">` pekar också på nuvarande dokument med motsvarande query-sträng tillagd.