Anzeige

Formulareingaben überprüfen

nchristoph

Erfahrenes Mitglied
#1
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
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.
 

nchristoph

Erfahrenes Mitglied
#3
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
 
#5
edit: Langsam ... aber überschneidet sich nicht komplett

Soll man beim Zeichensatz den auch im Formular erzwingen?
Wo genau willst du da (bei HTML-form-Tags) was erzwingen?

Wie speichert man heute eigentlich Passwörter in der DB? Nach wie vor mit MD5() und Salten oder AES256 oder komplett anders?
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.
 

nchristoph

Erfahrenes Mitglied
#6
Hab das so gemeint.
HTML:
<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:
if($row['password'] == password_hash($_POST['userpass'], PASSWORD_DEFAULT)){
//machwas
}
Oder anders?
 

merzi86

Erfahrenes Mitglied
#7
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:
if($row['password'] == password_hash($_POST['userpass'], PASSWORD_DEFAULT)){
//machwas
}
Oder anders?
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.
 

nchristoph

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

password_verify hilft allerdings.
PHP:
if(password_verify($pass, $test1)){
    echo "test1";
}else{
    echo "test2";
}
 
Anzeige

Neue Beiträge

Anzeige