Wachtwoord valideren met regex: JavaScript, PHP en HTML

Een reguliere expressie voor wachtwoorden controleert de vorm van een wachtwoord en of het aangeleverde wachtwoord sterk genoeg is om brute-force-aanvallen van bots te weerstaan. Een reguliere expressie voor een sterk wachtwoord De reguliere expressie hieronder controleert of een wachtwoord:

Wachtwoord valideren met regex: JavaScript, PHP en HTML

Een reguliere expressie voor wachtwoorden controleert de vorm van een wachtwoord en of het aangeleverde wachtwoord sterk genoeg is om brute-force-aanvallen van bots te weerstaan.

Een reguliere expressie voor een sterk wachtwoord

De reguliere expressie hieronder controleert of een wachtwoord:

  • Uit minstens 8 tekens bestaat. Dat stel je bij via {8,}

  • Minstens één hoofdletter bevat. Deze voorwaarde vervalt zodra je dit weghaalt: (?=.* ?[A-Z])

  • Minstens één kleine letter bevat. Deze voorwaarde vervalt zodra je dit weghaalt: (?=.* ?[a-z])

  • Minstens één cijfer bevat. Deze voorwaarde vervalt zodra je dit weghaalt: (?=.* ?[0-9])

  • Minstens één speciaal teken bevat. Deze voorwaarde vervalt zodra je dit weghaalt: (?=.* ?[#?!@$%^&*-])

javascript
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/

JavaScript-versie

De functie krijgt het wachtwoord als parameter binnen en vergelijkt dat met de reguliere expressie. Is er geen overeenkomst, dan mislukt de controle en geeft de functie false terug, past het wachtwoord wel bij het patroon, dan geeft ze true terug. Hier is de JavaScript-functie die het wachtwoord valideert

javascript
/**
 * Een wachtwoord valideren
 *
 * Als het wachtwoord niet veilig genoeg is, geef false terug
 *
 * @param mdp
 * @return Boolean
 */
function validateMDP(mdp){
    var Reg = new RegExp(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/);
    return Reg.test(mdp);
}

Zo gebruik je de JavaScript-functie

Het handigst zet je haar in een IF-statement, zoals hieronder.

javascript
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-versie

php
/*
 * wachtwoord valideren
 * @param $mdp
 */
 function isValidMDP($mdp)
 {
   return preg_match('/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/', $mdp)
 }

HTML-versie

Je kunt al in HTML controleren, nog vóór de validatie in PHP en JavaScript: met het attribuut pattern laat je met CSS zien of het wachtwoord aan de reguliere expressie voldoet.

html
 <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

Kanttekeningen bij wachtwoordcontrole met regex

Deze controle met een reguliere expressie is beter dan niets. Waar extra beveiliging telt, leg je het ingevoerde wachtwoord daarnaast langs een lijst met veelgebruikte wachtwoorden, zoals:

  • .IOlZPf1
  • !A1o2e3r4
  • etc

HTMLJavaScriptPHP

Damien Flandrin Webdeveloper sinds 2010, maker van Gekkode en Email Impact. Elk artikel wordt vóór publicatie getest op een echt project. Contact
Nieuwsbrief

Nieuwe tests, tutorials en projecten, per e-mail.

Reproduceerbare tests, geversioneerde code, gedateerde resultaten. Nooit spam.