Hallo Timon,
Das Stichwort, über dass du dich informierst, lautet SQL Injection.
kann man das nicht einfach durch 'htmlspecialchars()' unmöglich machen? man will ja sowieso kein html im passwort oder im username, und auch sonst nie html das der anwender eingegeben hat.
Nein, du musst mindestens auch noch mysql_real_escape_string() verwenden, wenn du Daten in eine MySQL-Datenbank einträgst. Schließlich könnte sonst SQL-Code in dem Text stehen und somit deine Datenbank manipuliert werden.
Die wichtigstens Dinge, die mir im Moment einfallen sind
* Alle Variablen vor der Verwendung instantiieren
* Traue keinen Daten, die du von einem Benutzer erhalten hast. Überprüfe immer, ob die Daten in der korrekten Form vorliegen. Du kannst dich nicht darauf verlassen, dass Angaben in HTML wie maxlength, etc. vom Benutzer nicht ignoriert werden.
* Escape Daten, bevor du sie an weitere Anwendungen (Datenbank) weiterreichst oder ausgibst (als HTML, etc.)
* Achte darauf, dass der Benutzer keinen Zugriff auf Daten bekommen kann, auf die er keinen Zugriff haben soll
Schöne Grüße,
Johannes