Welche Strings sind "sicher" für MySQL ?
Robert
- datenbank
Hallo alle,
ich übernehme aus einem Eingabefeld Strings wie "Namen", "Wohnort" etc. und schreibe sie über PHP in eine MySQL-DB.
Dies möchte ich nicht ungeprüft tun und jage die Daten nochmal per RegXps durch eine Prüfung (das Pattern für den Nachnamen ist zB [1]{1,25}$).
Bin ich damit auf der sicheren Seite? Welche Werte für $nachname wären eigentlich wirklich gefährlich für eine
INSERT INTO wasauchimmer
VALUES ($nachname);
Anweisung?
Danke
Robert
a-z0-9_ öäüÖÄÜß- ↩︎
Moin!
Dies möchte ich nicht ungeprüft tun und jage die Daten nochmal per RegXps durch eine Prüfung (das Pattern für den Nachnamen ist zB [1]{1,25}$).
Warum so kompliziert?
MySQL stellt in der Client-Bibliothek extra Escape-Funktionen bereit, die es erlauben, potentiell gefährliche Zeichen mit Escape-Zeichen zu entschärfen.
mysql_escape_string und mysql_real_escape_string.
- Sven Rautenberg
a-z0-9_ öäüÖÄÜß- ↩︎
Danke euch beiden!
Hello,
und nicht vergessen, vor der Anwendung der MySQL-Escape-Funktionen die von PHP hinzugefügten Slashes zu entfernen, soweit Du die Funktion (magic_quotes_gpc) nicht ausgeschaltet hast.
Sonst kannst Du in der DB später schlecht nach Daten suchen und müsstest die Backslashes sowieso vor der Ausgabe der Daten wieder entfernen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo!
Dies möchte ich nicht ungeprüft tun und jage die Daten nochmal per RegXps durch eine Prüfung (das Pattern für den Nachnamen ist zB [1]{1,25}$).
Bin ich damit auf der sicheren Seite? Welche Werte für $nachname wären eigentlich wirklich gefährlich für eine
Exakt für diesen Zweck gibt es in der MySQL-Extension von PHP die Funktion http://de3.php.net/mysql-real-escape-string (ab PHP4.3), bzw. http://de3.php.net/mysql-escape-string (ältere Versionen).
Diese Funktionen sorgen dafür dass alle möglicherweise "bösen" Zeichen entschärft werden. Was genau die Escapen kannnst Du in der MySQl-Doku nachlesen, da es sich hier um die gleichen Namen wie die C-Funktionen der mysql-lib handelt.
Grüße
Andreas
a-z0-9_ öäüÖÄÜß- ↩︎