"Genug Desinfektion" hängt stark davon ab, von welcher Umgebung Sie sprechen. Sanitization for MySQL sollte von der Bereinigung für die Webausgabe als vollständig getrennt betrachtet werden, und Sie sollten sie separat behandeln, um eine Menge Ärger zu vermeiden.
Sanitisierung für MySQL
mysql_real_escape_string()
wird ein Stück Daten bereinigen und es in eine SQL-Abfrage einfügen. Desinfektion für die Ausgabe
htmlspecialchars($val)
zur Ausgabezeit verhindert, dass schädliche Tags gerendert werden, weil die Zeichen <
und >
in ihre Entitätsdarstellungen konvertiert und nicht als Tagtrennzeichen dargestellt werden. ENT_QUOTES
, wenn Sie etwas ausgeben, das sich in einem in Anführungszeichen gesetzten HTML-Element befindet, z. B. <input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />
Das sollte alles sein, was Sie brauchen, außer Sie haben spezielle Anforderungen. strip_tags()
sollte nicht wirklich für die Bereinigung verwendet werden, da es mit schlecht formatiertem HTML getäuscht werden kann. Sanitisierung ist ein wertvolles Ziel, und wenn Sie Ihre Kontexte getrennt halten können, werden Sie weniger Probleme mit der Datenmanipulation zwischen ihnen haben.
Es ist wahrscheinlich sicherer und besser, htmlentities () für die Zeichenfolge aufzurufen, anstatt auf strip_tags () zu zählen.
strip_tags () entfernt keine speziellen HTML-Zeichen wie '"&
z. B., wenn Ihr Code lautet:
%Vor%und
%Vor%Dann enden Sie mit:
%Vor%Was ziemlich offensichtlich die Wurzel eines XSS-Lochs ist; Ein tatsächlicher Exploit bleibt als Übung für den Leser übrig.
Tags und Links php mysql sanitization