Axel Richter: <form action=""> vs. PHP_SELF

Beitrag lesen

Hallo,

<form name="sowieso" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">

  • PHP_SELF muß nicht gesetzt sein

Unter welchen Bedingungen kann das passieren?

  • Du vermeidest eine Sicherheitslücke. PHP_SELF enthält *nicht* den Script-Namen, sondern den aufrufenden Namen. Und der ist vom User manipulierbar ("/myscript.php/irgendwasVomUser"). Traue *niemals* Anwenderdaten!

Das stimmt allerdings. So genau hatte ich die Doku gar nicht gelesen. Natürlich habe ich es grade ausprobiert ;-), und tatsächlich wird das Script ausgeführt (Apache/PHP) auch wenn man es als http://example.com/myscript.php/irgendwasVomUser aufruft. Im action steht dann action="/myscript.php/irgendwasVomUser". Nun habe ich mir zwar noch keine Gedanken gemacht, wie man das "irgendwasVomUser" manipulieren müsste, damit es im action-Attribut Schaden anrichten könnte, aber prinzipiell ist es natürlich schon mal schlecht, dass der Nutzer etwas in meinen HTML-Quellcode schreiben kann. Man müsste also auch $_SERVER['PHP_SELF'] gegenchecken, bevor man es mit echo irgendwo in den Quellcode schreibt.

viele Grüße

Axel