Passwortvalidierung

Ein gutes Passwort sollte einige Kriterien erfüllen. Es sollte:

  • lang genug sein, wenigstens 8 Zeichen,
  • Sonderzeichen enthalten,
  • Groß- und Kleinbuchstaben nutzen,
  • Zahlen und Buchstaben beinhalten.

Der Benutzer kann sich ja gerne selbst Gedanken darüber machen, wie es lauten könnte, als Programmierer sollte man sich jedoch über die Validierung des Passwortfelds Gedanken machen. Mein Vorschlag lautet wie folgt.

Im ersten Schritt wird das Passwort an eine Funktion übergeben; je nach Ergebniswert wird das neue Passwort gesetzt oder der Benutzer darüber informiert, dass das von ihm gewählte Kennwort nicht alle Kriterien erfüllt:

$test = pwval($_REQUEST["passwort_neu"]);
if ($test == 1) {
     // Passworttest erfolgreich hier erfolgt die weitere Verarbeitung
} else {
     // Passwort nicht stark genug, Info an Benutzer
}

Soweit, so einfach. Wie muss nun aber die Funktion “pwval” lauten? Man könnte nun sicherlich einige if-Abfragen einbauen in Kombination mit irgendwelcken strlen-Aufrufen etc. Einfacher und kürzer geht es aber mit preg_match. Der Haken: Hierfür müssen reguläre Ausdrücke verwendet werden und wer drückt sich da nicht gerne herum. Aber dafür gibt es ja diesen Artikel.

Für oben genannte Kriterien plus der Einschränkung, nicht länger als 20 Zeichen sein zu dürfen, würde die Funktion wie folgt lauten:

function pwval($pwd) {
     if (preg_match("#.*^(?=.{8,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#", $pwd))
          return 1;
     else
          return 0;
}

Fertig. Das war’s. Einfach und übersichtlich

Schwerpunkt: , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.