Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Benutzereingaben reinigen und bereinigen, bevor sie an db gesendet werden

Halten Sie den Text zunächst logisch und sauber:

trim() -- OK
htmlentities($comment, ENT_NOQUOTES)  -- No; do later
mysqli_real_escape_string()  -- Yes; required by API
nl2br()  -- No; see below

Die Logik hinter diesen Empfehlungen:Die Daten in der Datenbank sollten nur einfache Daten sein. Keine htmlentities, keine br-tags. Aber Sie müssen den escape_string ausführen, um Daten von PHP an MySQL zu übergeben; die Fluchten werden nicht gespeichert.

Aber... Das ist nur der mittlere Schritt. Woher kamen die Daten? Ältere Versionen von PHP versuchen, Sie zu "schützen", indem Sie Escapes und anderen Müll hinzufügen, der für HTML OK funktioniert, aber MySQL vermasselt. Deaktivieren Sie solche magischen Fluchten und erhalten Sie die Rohdaten.

Wohin gehen die Daten? Wahrscheinlich HTML? Nach SELECTing die Daten wieder aus der Tabelle, dann Führen Sie zuerst htmlentities() aus und (optional) nl2br();

Beachten Sie, wenn Sie erwarten, Dinge wie <I> beizubehalten (für kursiv), Sie bitten um Ärger – großen Ärger. Alles, was ein Hacker tun muss, ist <script> ... allerlei Gemeinheiten in Ihre Webseite und möglicherweise Ihr gesamtes System zu injizieren.