Ju.lia: Sicherheit: Eingaben in Formular überprüfen vor DB-Eintrag?

Hallo,
ich habe ein PHP-Formular, welches persönliche Daten der User abfragt. Die Eingaben sollen in einer Datenbank gespeichert werden. Muss ich in Hinsicht auf die Datensicherheit unzulässige Zeichen in den Eingaben mit preg_match herausfiltern bevor ich sie übernehme oder reicht es aus wenn ich sie jeweils am Schluss mit einem "mysql_real_escape_string" "davor" abspeichere (Stichwort: SQL-Injection vs. Benutzerfreundlichkeit)? Oder gibt es noch was anderes, sinnvolleres?
Vielen Dank im voraus für eine Antwort.

LG Ju.lia

  1. Hello,

    ich habe ein PHP-Formular, welches persönliche Daten der User abfragt. Die Eingaben sollen in einer Datenbank gespeichert werden. Muss ich in Hinsicht auf die Datensicherheit unzulässige Zeichen in den Eingaben mit preg_match herausfiltern bevor ich sie übernehme oder reicht es aus wenn ich sie jeweils am Schluss mit einem "mysql_real_escape_string" "davor" abspeichere (Stichwort: SQL-Injection vs. Benutzerfreundlichkeit)? Oder gibt es noch was anderes, sinnvolleres?

    Für eine semantikfreie Datenspeicherung müsstest Du nur die Typgerechtigkeit (Umwandelbarkeit) der ankommenden Strings beachtgen und die jeweilige Schnittstelle schützen vor Befehlssequenzen. Dafür reicht für MySQL die Funktion mysql_real_escape_string() aus.

    Wenn dir aber die Bedeutung der Daten wichtig ist, dann müsstest Du sie auch noch auf ihre Plausibilität prüfen.

    Es ist aber immer schon suspekt, wenn jemand in einer Datenfeldgruppe (TT MM JJJJ) Buchstaben einträgt. Hingegen ist es häufig sinnvoll, nur Teildaten zuzulassen, also z.B. nur ein ausgefülltes Jahresfeld zu akzeptieren.

    Man könnte dann im Datensatz ein Flag setzen für "unvollständig ausgefüllt".

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. Hi,

    ich habe ein PHP-Formular, welches persönliche Daten der User abfragt. Die Eingaben sollen in einer Datenbank gespeichert werden. Muss ich in Hinsicht auf die Datensicherheit unzulässige Zeichen in den Eingaben mit preg_match herausfiltern bevor ich sie übernehme oder reicht es aus wenn ich sie jeweils am Schluss mit einem "mysql_real_escape_string" "davor" abspeichere (Stichwort: SQL-Injection vs. Benutzerfreundlichkeit)? Oder gibt es noch was anderes, sinnvolleres?

    Durcharbeiten, auch die zweite Seite: http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
    Danach sollten eigentlich keine Fragen mehr offen sein.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?