
Ein regulärer Ausdruck für Passwörter prüft die Form eines Passworts und stellt sicher, dass das übergebene Passwort stark genug ist, um Brute-Force-Angriffen von Bots standzuhalten.
Ein regulärer Ausdruck für ein starkes Passwort
Der reguläre Ausdruck unten prüft, ob ein Passwort:
-
Aus mindestens 8 Zeichen besteht. Anpassen lässt sich das über {8,}
-
Mindestens einen Großbuchstaben enthält. Diese Bedingung entfällt, wenn du das hier entfernst: (?=.* ?[A-Z])
-
Mindestens einen Kleinbuchstaben enthält. Diese Bedingung entfällt, wenn du das hier entfernst: (?=.* ?[a-z])
-
Mindestens eine Ziffer enthält. Diese Bedingung entfällt, wenn du das hier entfernst: (?=.* ?[0-9])
-
Mindestens ein Sonderzeichen enthält. Diese Bedingung entfällt, wenn du das hier entfernst: (?=.* ?[#?!@$%^&*-])
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/JavaScript-Version
Die Funktion nimmt das Passwort als Parameter entgegen und vergleicht es mit dem regulären Ausdruck. Gibt es keine Übereinstimmung, scheitert die Prüfung und die Funktion liefert false zurück, passt das Passwort dagegen zum Muster, liefert sie true. Hier die JavaScript-Funktion, die das Passwort validiert
/**
* Ein Passwort validieren
*
* Wenn das Passwort nicht sicher genug ist, false zurückgeben
*
* @param mdp
* @return Boolean
*/
function validateMDP(mdp){
var Reg = new RegExp(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/);
return Reg.test(mdp);
}So nutzt du die JavaScript-Funktion
Am einfachsten setzt du sie in einer IF-Anweisung ein, wie unten.
if(validateMDP(mdp)){
alert("Mot de passe valide");
} else {
alert("Mot de passe invalide");
}
See the Pen
Valider un email avec une expression régulière by Damien Flandrin (@dam62500)
on CodePen.0
PHP-Version
/*
* Passwort validieren
* @param $mdp
*/
function isValidMDP($mdp)
{
return preg_match('/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/', $mdp)
}HTML-Version
Du kannst schon im HTML prüfen, vor der Validierung in PHP und JavaScript: Über das Attribut pattern lässt sich per CSS hervorheben, ob das Passwort dem regulären Ausdruck entspricht.
<input
name="mdp"
type="text"
pattern="(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}"
/>
See the Pen
Vérifier une date avec une expression régulière en HTML by Damien Flandrin (@dam62500)
on CodePen.0
Diese Prüfung per regulärem Ausdruck ist besser als nichts. Wo es auf zusätzliche Sicherheit ankommt, solltest du das eingegebene Passwort außerdem gegen eine Liste gängiger Passwörter abgleichen, etwa:
- .IOlZPf1
- !A1o2e3r4
- etc


