Eu estava fazendo algumas pesquisas para encontrar um bom exemplo de verificador de força da senha que usa JavaScript e Expressões regulares (Regex). No aplicativo do meu trabalho, fazemos um post back para verificar a força da senha e é bastante inconveniente para nossos usuários.
O que é Regex?
Uma expressão regular é uma sequência de caracteres que define um padrão de pesquisa. Normalmente, esses padrões são usados por algoritmos de pesquisa de string para find or encontre e substitua operações em strings ou para validação de entrada.
Este artigo definitivamente não tem como objetivo ensinar expressões regulares. Saiba que a capacidade de usar expressões regulares simplificará absolutamente o seu desenvolvimento enquanto você procura por padrões no texto. Também é importante observar que a maioria das linguagens de desenvolvimento otimizou o uso de expressões regulares ... então, em vez de analisar e pesquisar strings passo a passo, o Regex é normalmente muito mais rápido no lado do servidor e do cliente.
Eu pesquisei na web um pouco antes de encontrar um exemplo de algumas ótimas expressões regulares que procuram uma combinação de comprimento, caracteres e símbolos. No entanto, o código era um pouco excessivo para o meu gosto e feito sob medida para .NET. Então, simplifiquei o código e coloquei em JavaScript. Isso faz com que ele valide a força da senha em tempo real no navegador do cliente antes de publicá-la de volta ... e fornece algum feedback ao usuário sobre a força da senha.
Digite uma senha
A cada toque do teclado, a senha é testada em relação à expressão regular e, em seguida, o feedback é fornecido ao usuário em um intervalo abaixo dela.
Digite a senha
Aqui está o código
A Expressões regulares faça um trabalho fantástico de minimizar o comprimento do código:
- Mais personagens - Se o comprimento for inferior a 8 caracteres.
- Fraco - Se o comprimento for inferior a 10 caracteres e não contiver uma combinação de símbolos, letras maiúsculas, texto.
- Médio - Se o comprimento for 10 caracteres ou mais e tiver uma combinação de símbolos, maiúsculas, texto.
- Forte - Se o comprimento for 14 caracteres ou mais e tiver uma combinação de símbolos, maiúsculas e texto.
<script language="javascript">
function passwordChanged() {
var strength = document.getElementById('strength');
var strongRegex = new RegExp("^(?=.{14,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
var mediumRegex = new RegExp("^(?=.{10,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{8,}).*", "g");
var pwd = document.getElementById("password");
if (pwd.value.length == 0) {
strength.innerHTML = 'Type Password';
} else if (false == enoughRegex.test(pwd.value)) {
strength.innerHTML = 'More Characters';
} else if (strongRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:green">Strong!</span>';
} else if (mediumRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:orange">Medium!</span>';
} else {
strength.innerHTML = '<span style="color:red">Weak!</span>';
}
}
</script>
<input name="password" id="password" type="text" size="15" maxlength="100" onkeyup="return passwordChanged();" />
<span id="strength">Type Password</span>
Endurecendo sua solicitação de senha
É essencial que você não valide apenas a construção da senha no seu Javascript. Isso permitiria que qualquer pessoa com ferramentas de desenvolvimento de navegador ignorasse o script e usasse a senha que desejasse. Você deve SEMPRE utilizar uma verificação do servidor para validar a força da senha antes de armazená-la em sua plataforma.
Encontrei outros verificadores de força de senha. Seu algoritmo baseado no dicionário de palavras. Experimente um em microsoft.com – http://www.microsoft.com/protect/yourself/password/checker.mspx e um em itsimpl.com – http://www.itsimpl.com
OBRIGADA! OBRIGADA! OBRIGADA! Eu estive brincando por 2 semanas com maldito código de força de senha de outros sites e puxando meu cabelo. O seu é curto, funciona como eu quero e o melhor de tudo, fácil para um novato em javascript modificar! Eu queria capturar o veredicto de força e não deixar o formulário postar para realmente atualizar a senha do usuário, a menos que ela atendesse ao teste de força. O código de outras pessoas era muito complicado ou não funcionava direito ou outra coisa. Eu te amo! XXXXX
De nada! De nada! De nada!
Eu também te amo!
graças a Deus por pessoas que podem realmente escrever um pedaço de código corretamente.
Tinha a mesma experiência que Janis.
Isso funciona imediatamente, o que é perfeito para pessoas como eu que não conseguem codificar javascript!
Obrigado por escrever um pedaço de código que faz exatamente o que diz na lata!
Oi, em primeiro lugar muito obrigado por seus esforços, tentei usar isso com o Asp.net, mas não funcionou, estou usando
em vez de tag, e não funcionou, alguma sugestão?!
Para Nisreen: o código na caixa destacada não funciona com um cut'n'paste. As aspas simples estão confusas. O código do link de demonstração está bom.
Ei, eu gosto do seu roteiro! Eu traduzi para o holandês e postei no meu fórum aqui!
bom trabalho! exatamente como deve ser feito no cliente
muito bom trabalho….
Obrigado Douglas, eu uso para o meu trabalho atual.
“P@s$w0rD” aparece forte, embora seja quebrado rapidamente com um ataque de dicionário…
Para implantar tal recurso em uma solução profissional, acredito ser importante combinar esse algoritmo com uma verificação de dicionário.
Funciona muito bem no XULRunner com algumas alterações. Obrigado!
Obrigado por este pequeno código, agora posso usá-lo para testar a força da minha senha quando meus visitantes inserirem suas senhas,
Grande pedaço de codificação
O script ficou super .Eu tinha usado em nosso projeto atual
Obrigado por compartilhar!
Expressão tão simples e fantástica. Eu, como testador, tirei meus TCs dessa expressão.
Obrigado por compartilhar. Você tem alguns links quebrados nesta página. PARA SUA INFORMAÇÃO.
alguém pode dizer, por que não funcionou o meu ..
copiei todo o código e colei no notepad++, mas não funcionou?
por favor me ajude ..
Fantástico!!!!! Obrigada.
Ótimo trabalho cara! Simples e eficaz. Muito obrigado por compartilhar!
obrigado
Bom, obrigado. Mas… O que é um exemplo de um pw STRONG? 'não consigo encontrar um!-{}
Esse tipo de “verificador de força” leva as pessoas a um caminho muito perigoso. Ele valoriza a diversidade de caracteres em relação ao comprimento da senha, levando-o a classificar senhas mais curtas e diversas como mais fortes do que senhas mais longas e menos diversas. Essa é uma falácia que colocará seus usuários em apuros se eles enfrentarem uma séria ameaça de hackers.
Não discordo, Jordan! O exemplo foi simplesmente colocado como um exemplo do script. Minha recomendação para as pessoas é utilizar uma ferramenta de gerenciamento de senhas para criar senhas independentes para qualquer site exclusivo. Obrigado!
obrigado funciona muito bem.
Obrigado está funcionando bem
Eu realmente aprecio que você seja pesquisado isso muitas vezes, mas finalmente recebi seu post e estou realmente surpreso. OBRIGADA
Obrigado cara. Acabei de implantar no meu site e está funcionando muito bem.
Adoro ouvir isso! Você é muito bem-vindo!
Eu aprecio você compartilhar! Tenho procurado reforçar a força da senha em nosso site e esta funcionou do jeito que eu queria. Muito obrigado!
Obrigado, espero que você possa personalizá-lo conforme necessário.
Você é um salva-vidas! Eu estava analisando strings à esquerda, à direita e ao centro, e pensei que havia uma maneira melhor e encontrei seu código usando Regex. Foi capaz de tilintar com ele para o meu site…Você não tem idéia do quanto isso ajudou. Muito obrigado Douglas!!
Ótimo para ouvir!