1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Formulareingaben überprüfen

Dieses Thema im Forum "PHP" wurde erstellt von nchristoph, 1. November 2016.

  1. nchristoph

    nchristoph Erfahrenes Mitglied

    Hallo zusammen,

    wie validiere ich am besten Formulareingaben bevor ich die Daten in die Datenbank übergebe?

    Da ich PDO für die Datenbank benutze stellt sich für mich auch die Frage, ob bindValue schon genügt oder ob ich noch was beachten muss/sollte?

    mfg
    Christoph
     
  2. sheel

    sheel I love Asm Administrator

    Hi

    vorausgesetzt es wird überall ein sinnvoller Zeichensatz verwendet (zB. UTF8) reicht das, um SQL-Injections zu verhindern.

    Beim Auslesen und Ausgeben zum Browser hin ist (je nach möglichem Inhalt) zb. htmlcpecialchars trotzdem noch nötig.

    Andere Validierungen, zB. ob die Eingabe eine mögliche Mailadresse ist usw.usw. muss man natürlich auch noch machen, falls gewünscht.
     
  3. nchristoph

    nchristoph Erfahrenes Mitglied

    Soll man beim Zeichensatz den auch im Formular erzwingen?

    Sonst ist alles UTF-8.

    Wie speichert man heute eigentlich Passwörter in der DB? Nach wie vor mit MD5() und Salten oder AES256 oder komplett anders?

    mfg
    Christoph
     
  4. merzi86

    merzi86 Erfahrenes Mitglied

    MD5 wird schon ein paar Jahre nicht mehr empfohlen, da es doch zu leicht zu Kollisionen kommen kann.

    Momentan ist im Bereich PHP die Funktion password_hash so die "Standard Verschlüsselungs"-Funktion.
    Mit dem Algorithmus Variable kann die Hash Variante bestimmt werden, der Standard ist momentan BCrypt (über die Kontstante PASSWORD_DEFAULT).

    http://php.net/manual/de/function.password-hash.php
     
    sheel gefällt das.
  5. sheel

    sheel I love Asm Administrator

    edit: Langsam ... aber überschneidet sich nicht komplett

    Wo genau willst du da (bei HTML-form-Tags) was erzwingen?

    Weder noch.

    MD5 ist, je nach dem wie und wofür es eingesetzt wird, entweder komplett gebrochen oder zumindest fragwürdig.

    AES (egal mit welcher Keygröße) ist ein Verschlüsselungsverfahren, kein Hash. Um das für Passwörter in der DB zu verwenden müsste auch der Key irgendwo für das Programm erreichbar sein (zB. auch in der DB) ... und damit ist der ganze Schutz sinnlos.

    Entweder SHA2/3 zusammen mit PBKDF2 nehmen (nicht allein), oder bcrypt/scrypt.
     
  6. nchristoph

    nchristoph Erfahrenes Mitglied

    Hab das so gemeint.
    HTML:
    1. <form action="demo_form.asp" accept-charset="UTF-8">
    Danke für den Link. Ich hab mir den gerade mal angesehen.

    Wie prüft man dabei ob das eingegebene Passwort und das abgespeicherte übereinstimmen?

    PHP:
    1. if($row['password'] == password_hash($_POST['userpass'], PASSWORD_DEFAULT)){
    2. //machwas
    3. }
    Oder anders?
     
  7. merzi86

    merzi86 Erfahrenes Mitglied

    Genauso, da es ein Hash ist und somit nicht bzw. nur sehr schwer umkehrbar ist bleibt einen nichts anderes übrig, als die Hashwerte zu vergleichen.
     
  8. nchristoph

    nchristoph Erfahrenes Mitglied

    Also mit meinem Beispiel funktioniert es schon mal nicht weil sich der Hash beim generieren jedes mal ändert.

    password_verify hilft allerdings.
    PHP:
    1. if(password_verify($pass, $test1)){
    2.     echo "test1";
    3. }else{
    4.     echo "test2";
    5. }
     
Die Seite wird geladen...
Ähnliche Themen - Formulareingaben überprüfen
  1. n1ght
    Antworten:
    13
    Aufrufe:
    323
  2. rene5
    Antworten:
    13
    Aufrufe:
    2.135
  3. FrankWST
    Antworten:
    3
    Aufrufe:
    579
  4. Goregoyle
    Antworten:
    2
    Aufrufe:
    1.399
  5. piano
    Antworten:
    2
    Aufrufe:
    1.237