Reihenfolge beim Überprüfen neuer Passwörter
bearbeitet von TSHello,
> du bekommst als POST oder GET Parameter immer nur Strings. Das musst Du also nicht wirklich prüfen. Prüfen könntest Du, ob die Parameter gefüllt oder leer waren (mit `empty($_POST['...'])`.
Nee, das ist zwar vermutlich hier trotzdem brauchbar, weil man keine Passworte akzeptieren will, die mur ein Digit haben, aber es ist formal falsch!
Mit [empty()](https://www.php.net/manual/en/function.empty) würden auch die Werte "0" und " " als _leer_ identifiziert. Das will man sicherlich nicht.
Die Prüfung müsste z. B. auf
~~~php
if(isset($_POST['password1']) && (strlen($_POST['password1']) > 7))
{
### ...
}
~~~
lauten.
Reihenfolge:
1. Vorhandensein der POST-Parameter mit isset() prüfen
2. Übereinstimmung prüfen ([===, identisch](https://www.php.net/manual/de/language.operators.comparison.php))
3. Mindestlänge prüfen
4. verlangten Zeichenvorrat prüfen
4a. auf erlaubte Zeichen prüfen
4b. auf geforderte Anzahl von Versalien, Gemeinen, Ziffern, Sonderzeichen prüfen
5. hashen (bitte nicht mehr mit md5()m sondern mit [password_hash()](https://www.php.net/manual/en/function.password-hash.php) )
6. eintragen
7. ggf. Bestätigungsmail (selbstverständlich ohne das Passwort!) senden
Und der ganze Vorgang **muss** über TLS laufen.
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
Reihenfolge beim Überprüfen neuer Passwörter
bearbeitet von TSHello,
> du bekommst als POST oder GET Parameter immer nur Strings. Das musst Du also nicht wirklich prüfen. Prüfen könntest Du, ob die Parameter gefüllt oder leer waren (mit `empty($_POST['...'])`.
Nee, das ist zwar vermutlich hier trotzdem brauchbar, weil man keine Passworte akzeptieren will, die mur ein Digit haben, aber es ist formal falsch!
Mit [empty()](https://www.php.net/manual/en/function.empty) würden auch die Werte "0" und " " als _leer_ identifiziert. Das will man sicherlich nicht.
Die Prüfung müsste z. B. auf
~~~php
if(isset($_POST['password1']) && (strlen($_POST['password1']) > 7))
{
### ...
}
~~~
lauten.
Reihenfolge:
1. Vorhandensein der POST-Parameter mit isset() prüfen
2. Übereinstimmung prüfen ([===, identisch](https://www.php.net/manual/de/language.operators.comparison.php))
3. Mindestlänge prüfen
4. verlangten Zeichenvorrat prüfen
5. hashen (bitte möglichst nicht mehr mit md5())
6. eintragen
7. ggf. Bestätigungsmail (selbstverständlich ohne das Passwort!) senden
Und der ganze Vorgang **muss** über TLS laufen.
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.