Robert: Welche Strings sind "sicher" für MySQL ?

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


  1. a-z0-9_ öäüÖÄÜß- ↩︎

  1. 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

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 21205,05 Euro Spendengelder!

    1. a-z0-9_ öäüÖÄÜß- ↩︎

    1. Danke euch beiden!

      1. 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

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. 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


    1. a-z0-9_ öäüÖÄÜß- ↩︎