Verificador de força de senha + código de medidor para formulários de cadastro | We.Inc
Veja quão fácil é adivinhar uma senha, tudo no seu navegador, com estimativas de tempo para quebrá-la e os padrões que a enfraquecem. Depois copie um medidor de força em React ou JavaScript puro com botão de mostrar senha.
Uma senha forte é aquela que um atacante não consegue adivinhar em um número razoável de tentativas. O comprimento é o que mais importa, seguido de evitar senhas comuns, palavras, sequências do teclado e datas. Digite uma senha abaixo para ter uma estimativa offline de tentativas e tempo para quebrá-la, depois copie um medidor de força pronto com botão de mostrar senha para o seu próprio formulário de cadastro.
O que a orientação atual do NIST pede dos formulários de cadastro
Regra
NIST SP 800-63B
Comprimento mínimo
15 caracteres quando a senha é o único fator; 8 quando usada com outro fator
Comprimento máximo
Permitir pelo menos 64 caracteres
Regras de composição (deve incluir um símbolo...)
Não impor
Trocas periódicas obrigatórias
Não exigir; forçar a troca só depois de um comprometimento
Lista de bloqueio
Rejeitar senhas comuns, previsíveis ou vazadas
Colar e gerenciadores de senha
Permitir
O verificador divide sua senha nas partes que um atacante tentaria primeiro e multiplica as tentativas que cada parte exige. Nada do que você digita sai desta página. Abaixo dele há dois medidores de força que você pode colar em um formulário de cadastro, um para React com Tailwind e outro em JavaScript puro.
Digite uma senha. A estimativa é atualizada a cada tecla e nunca sai do seu navegador.
Leia a nota, de muito fraca a muito forte, o número estimado de tentativas e o tempo para quebrá-la em quatro cenários de ataque.
Veja quais partes foram reconhecidas como senhas comuns, palavras, sequências do teclado, sequências, repetições ou anos, com um aviso para cada uma.
Copie o medidor em React ou JavaScript puro para o seu formulário. Os dois incluem um botão de mostrar senha e anunciam as mudanças para leitores de tela.
Três ou quatro palavras aleatórias em sequência vencem uma mistura curta de símbolos, e são muito mais fáceis de digitar no celular.
Use um gerenciador de senhas e deixe que ele gere as senhas. A melhor senha é aquela que você nunca precisa lembrar.
No seu próprio formulário de cadastro, verifique as senhas novas contra uma lista de vazamentos no servidor. O Have I Been Pwned oferece uma API de intervalos gratuita que nunca recebe o hash completo da senha.
Use autocomplete="new-password" nos campos de cadastro e autocomplete="current-password" nos campos de login para que os gerenciadores de senha ofereçam a ação certa.
Perguntas frequentes
É seguro digitar minha senha real aqui?
A verificação roda inteiramente no seu navegador e a página não faz nenhuma requisição de rede com o que você digita. Mesmo assim, o hábito mais seguro é testar uma senha com o mesmo formato da real, não a real.
Quão preciso é o tempo para quebrar?
É uma estimativa. O verificador usa listas internas curtas de senhas e palavras comuns, então uma senha feita com uma palavra menos comum pode tirar aqui uma nota maior do que merece. Os quatro cenários assumem velocidades de ataque típicas, de um formulário de login com limite de tentativas a um banco de dados roubado com hash rápido. Atacantes reais também usam listas de senhas vazadas e regras muito maiores do que qualquer coisa que uma página web consiga carregar.
Meu formulário de cadastro deve exigir um símbolo e um número?
A orientação atual do NIST diz que não. Regras de composição empurram as pessoas para padrões previsíveis como Password1!, que passam na regra e ainda assim caem na adivinhação. Um comprimento mínimo mais uma verificação contra senhas comuns e vazadas faz mais pela segurança.
Por que meu formulário precisa de um botão de mostrar senha?
Campos mascarados causam erros de digitação, principalmente no celular, e esses erros levam a bloqueios e redefinições de senha. Um botão de alternância permite conferir o que foi digitado. Use um botão de verdade com um rótulo claro e mantenha o tipo do campo alternando entre password e text.
O código do medidor verifica senhas contra vazamentos?
Não. Os medidores avaliam comprimento, variedade e alguns padrões óbvios no navegador para dar um retorno rápido. A barreira real deve ficar no seu servidor: exija o comprimento mínimo e rejeite ali as senhas encontradas em listas de vazamentos.
Por que comprimento vence complexidade
Cada caractere a mais multiplica o número de senhas possíveis. Adicionar uma letra minúscula aleatória multiplica por 26, enquanto trocar um a por @ em uma palavra não acrescenta quase nada, porque os atacantes aplicam essas trocas automaticamente.
É por isso que a estimativa premia frases-senha longas. Quatro palavras sem relação entre si podem chegar à faixa mais forte e continuar fáceis de digitar, desde que não sejam uma frase famosa ou um trecho de música.
Como criar um medidor confiável
Um bom medidor dá um retorno que corresponde exatamente às regras do servidor. Se o medidor diz forte e o servidor depois rejeita a senha, as pessoas deixam de confiar nos dois. Mantenha as regras em um só lugar e mostre as mesmas mensagens em ambos.
Anuncie as mudanças de forma educada com aria-live para que quem usa leitor de tela ouça o resultado sem perder o lugar, e nunca dependa só da cor: combine a barra com um rótulo de texto como Fraca ou Forte.
Medidor de força em React + Tailwind com mostrar senha
Um campo de senha controlado com botão de mostrar e ocultar, uma barra de quatro etapas, uma lista de regras e um rótulo de texto ao vivo para leitores de tela.
Medidor em HTML e JavaScript puros
A mesma ideia sem framework. Cole em qualquer página; o script só mexe nos elementos dentro do contêiner.
Muito fraca
Fraca
Razoável
Forte
Muito forte
senha comum
palavra do dia a dia
sequência do teclado
caracteres aleatórios
Contém uma das senhas mais comuns. Os atacantes tentam essas primeiro.
Contém uma palavra do dia a dia. Trocar letras por símbolos (a por @) quase não ajuda.
Contém uma sequência de teclas vizinhas como qwerty ou 1qaz.
Contém uma sequência como abc ou 1234.
Contém caracteres repetidos.
Contém um ano. Anos de nascimento e anos recentes são tentados cedo.
Tem menos de 15 caracteres. O comprimento dá mais força do que os símbolos.
Online, com limite de tentativas (100 por hora)
Online, sem limite de tentativas (10 por segundo)
Banco de dados roubado, hash lento como bcrypt (10 mil por segundo)
Banco de dados roubado, hash rápido como MD5 (10 bilhões por segundo)
Verifique uma senha
Senha (fica neste dispositivo)
Ocultar
Mostrar
cerca de 10^{n} tentativas
Tempo médio para adivinhá-la
Comece a digitar para ver a estimativa.
Código do medidor de força
Dois medidores que você pode colar em um formulário de cadastro. Mantenha as regras do servidor iguais às do medidor.