Expressão regular para validar uma palavra-passe segura

A expressão regular de palavra-passe serve para controlar a forma de uma palavra-passe e confirmar que a que te enviam é suficientemente forte para aguentar os ataques por força bruta dos bots.

Expressão regular para validar uma palavra-passe segura

A expressão regular de palavra-passe serve para controlar a forma de uma palavra-passe e confirmar que a que te enviam é suficientemente forte para aguentar os ataques por força bruta dos bots.

Expressão regular para uma palavra-passe sólida

A expressão regular abaixo verifica que uma palavra-passe:

  • Tem 8 caracteres no mínimo. Ajusta esse número alterando {8,}

  • Leva pelo menos uma letra maiúscula. Podes retirar esta condição eliminando (?=.* ?[A-Z])

  • Leva pelo menos uma letra minúscula. Podes retirar esta condição eliminando (?=.* ?[a-z])

  • Leva pelo menos um algarismo. Podes retirar esta condição eliminando (?=.* ?[0-9])

  • Leva pelo menos um carácter especial. Podes retirar esta condição eliminando (?=.* ?[#?!@$%^&*-])

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

Versão JavaScript

A função recebe a palavra-passe como parâmetro e compara-a com a expressão regular. Se não encontrar nenhuma correspondência, a validação falha e a função devolve false, se houver correspondência, a palavra-passe tem o formato certo e a função devolve true. Esta é a função JavaScript que valida a palavra-passe

javascript
/**
 * Valida uma palavra-passe
 *
 * Se a palavra-passe não for suficientemente segura, devolve false
 *
 * @param mdp
 * @return Boolean
 */
function validateMDP(mdp){
    var Reg = new RegExp(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/);
    return Reg.test(mdp);
}

Como usar a função JavaScript

A forma mais simples de a usar é dentro de uma declaração IF, como aqui em baixo.

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

Versão PHP

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

Versão HTML

Podes verificar em HTML, antes da validação em PHP e JavaScript, com o atributo pattern: dá-te forma de destacar com CSS se a palavra-passe respeita a expressão regular.

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

Notas sobre a validação de palavras-passe com regex

Esta validação com regex é melhor do que nada, mas quando precisas de mais segurança convém comparar também a palavra-passe introduzida com uma lista de palavras-passe de uso corrente, como:

  • .IOlZPf1
  • !A1o2e3r4
  • etc

HTMLJavaScriptPHP

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.