Tach!
Achso, klar. Naja wie schon erwähnt, eigentlich alles was ich mit Formularen und
$_POST
Variablen mache landet in einem SQL-Statement. Und alles was Ausgegeben wird kommt aus der DB.
Und du meinst nun, weil sie aus der DB kommen, sind die Daten "sicher"? Das versuche ich dir ja zu erklären, dass die Herkunft der Daten keine Rolle spielt und nur das Ziel entscheidend ist, für die Art und Weise, wie bestimmte Zeichen maskiert werden müssen. Auch ein harmloses < in einer mathematischen Gleichung beispielsweise, ist in HTML ein Zeichen mit besonderer Bedeutung. Das muss nicht der Anfang eines XSS-Versuchs sein, um den Browser dazu zu bringen, Zeichen entgegen der eigentlichen Intention zu interpretieren. Wenn ein < einfach nur als solches ausgegeben werden soll, muss es als < notiert werden (abgesehen von Fehlerkorrekturversuchen der Browser in manchen Fällen). Es spielt keine Rolle, ob es aus der Datenbank kommt oder aus einer Nutzereingabe oder aus einer Nutzereingabe, die in einer Datenbank abgelegt wurde.
Darum der Gedanke, warum nicht gleich jede
$_POST
Variable für das SQL_Statement Zentral prüfen.
Weil das zwar in deinem einfachen Fall zielführend ist, aber sobald deine Projekte komplexer werden, bekommst du mit der Herangehensweise immer mehr Probleme. Bitte lies den bereits verlinkten Kontextwechsel-Artikel. Der ist zweiteilig und in seiner Fortsetzung gibt es den Abschnitt HTML in der Datenbank. Darin kannst du Beispiele für ganz harmlose (also nicht sicherheitsrelevante) Probleme finden, wenn du Daten zu früh für einen bestimmten Ausgabekontext vorbereitest.
dedlfix.