php-newbie: Fehler in Sticky Form

Beitrag lesen

Eine Frage hätte ich da noch:

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

Das unbehandelte Einfügen von $_SERVER['PHP_SELF'] ist ebenso wie ...

...

... bei Betreff und Text eine der am häufigsten vorkommenden Sicherheitslücken, da der Kontextwechsel nicht beachtet wurde.

Beim Aufruf der Seite können nämlich Parameter (?foo=bar) angehängt werden, die in $_SERVER['PHP_SELF'] landen. Wenn man da geschickt Werte einfügt, kann man das action-Attribut mit einem " beenden und dann beliebigen HTML-Code (inklusive Javascript) einschleusen. Ein htmlspecialchars() um $_SERVER['PHP_SELF'] und Betreff und Text ist eine Pflichtveranstaltung.

Ok, ich versteh kaum ein Wort davon, aber in dem von Dir vermeintlich guten FAQ (http://www.php-faq.de/q-stil-normalform.html) macht das ja auch ohne irgend eine Form der Bearbeitung von $_SERVER['PHP_SELF']?!

siehe:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>">  
<input type="text"  
       name="textfeld"  
       value="<?php if (isset($_REQUEST['textfeld'])) echo htmlspecialchars($_REQUEST['textfeld']); ?>">  
<br>  
<input type="submit"  
       name="do_form_x"  
       value="Ausführen">  
</form>

Also was denn nun? Ist auch diese Seite Schrott?!

Ich hab so das Gefühl es gibt kein gescheites Tutorial bei dem man sauberes und sicheres PHP lernen kann. *grummel