"Ausreichende Desinfektion" hängt stark davon ab, von welcher Umgebung Sie sprechen. Die Bereinigung für MySQL sollte völlig separat betrachtet werden von der Bereinigung für die Webausgabe, und Sie sollten sie separat behandeln, um viel Ärger zu vermeiden.
Bereinigung für MySQL
mysql_real_escape_string()
bereinigt ein Datenelement und macht es sicher, es in eine SQL-Abfrage einzufügen.- Jede andere Art von schädlichen Daten, wie HTML-Tags innerhalb der Zeichenfolge, sollte absolut ignoriert werden. Der Versuch, es hier zu manipulieren, wird Ihnen Kopfschmerzen bereiten, wenn Sie später versuchen, es zu "entmanipulieren", nachdem Sie es aus der Datenbank geholt haben. Schlechte "Webdaten" können Ihrer Datenbank nichts anhaben.
Bereinigung für die Ausgabe
htmlspecialchars($val)
zur Ausgabezeit verhindert, dass böswillige Tags gerendert werden, da<
und>
Zeichen werden in ihre Entitätsdarstellungen konvertiert und nicht als Tag-Trennzeichen gerendert.- Verwenden Sie den
ENT_QUOTES
Modifikator, wenn Sie etwas ausgeben, das sich innerhalb des Attributs in Anführungszeichen eines HTML-Elements befindet, z. B.<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />
Das sollte alles sein, was Sie brauchen, es sei denn, Sie haben besondere Anforderungen. strip_tags()
sollte nicht wirklich zur Bereinigung verwendet werden, da es mit schlecht geformtem HTML getäuscht werden kann. Die Bereinigung ist ein erstrebenswertes Ziel, und wenn Sie Ihre Kontexte getrennt halten können, werden Sie weniger Probleme mit der Datenmanipulation zwischen ihnen haben.