Executando verificação de segurança...
3

Compilação de sites que possuem regras "burras" de senha

Esbarrei hoje com o https://dumbpasswordrules.com/ que é um agregador de capturas de tela mostrando sites com regras "burras" ou absurdas relacionadas a senhas. Coloco "burras" entre aspas porque não estou aqui numa posição de criticar a segurança de nenhum site, pois cada um faz o que achar melhor (e até porque algumas regras fazem sentido)... mas o conjunto de várias regras acaba ficando uma loucura para o usuário e até reduzindo a segurança de uma senha.

Site Dumb Password Rules

Após navegar por alguns casos, agrupei aqui algumas regras que achei curioso:

  1. A senha não deve começar com ? ou !
  2. A senha não deve conter espaços.
  3. A senha não deve conter o caractere %
  4. A senha não é "case sensitive" (isso significa que não importa colocar AbCd ou abcd)
  5. A senha deve conter exatamente 8 caracteres.
  6. A senha não deve conter caracteres acentuados.
  7. A senha não deve conter dois caracteres iguais seguidos.
Carregando publicação patrocinada...
3

Eu não vi o que ele considerou, mas existem outras que muitas usam e também não fazem sentido:

  • Deve conter pelo menos 1 maiúsculo
  • Deve conter pelo menos 1 minúsculo
  • Deve conter pelo menos 1 algarismo
  • Deve conter pelo menos 1 símbolo não letra ou algarismo
  • Deve conter pelo menos x caracteres

Como é muito comum em vários sites então essas são consideradas boas regras.

Obviamente que alguns sites podem fazer algo assim, mas para a maioria dos casos não deveria colocar esse fardo para o usuário.

Um bom site gera uma senha ou deixa a pessoa gerar calculando a entropia, provavelmente vai dando feedback conforme a pessoa vai digitando a senha proposta até ficar em um nível aceitável.

Eventualmente pode dar dicas do que pode facilitar para ter uma senha mais curta ou mais fácil de assimilar sem comprometer a entropia, mas não aceitar por causa de regras específicas é ruim.

Lembrando que as melhores senhas são as longas, o resto importa muito pouco. As longas evitam também a pessoa reusar alguma informação fácil de obter, mas precisam ser muito longas para não ter nenhuma outra verificação.

Veja mais. E em inglês outra opção.

Melhor ainda não precisar de senhas, afinal existem bons fornecedores gratuitos de autenticação. Existem motivos para não usar, eventualmente, mas todos deveriam considerar um.

Farei algo que muitos pedem para aprender programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

2

O melhor tipo de senha são frases

https://olhardigital.com.br/2020/02/25/seguranca/fbi-recomenda-o-uso-de-frases-chave-em-vez-de-senhas-complexas/

Frase é mais simples, seria melhor vc até inventar palavras, e ataques de força bruta nunca vão chegar a acertar!
O problema esta no limite o sistemas de hash :)

Ou pdoe usar a técnica Diceware permite a geração de uma frase secreta sem

https://theintercept.com/2016/12/29/senhas-faceis-para-voce-memorizar-e-que-nem-a-nsa-nao-consegue-desvendar/

2

Na verdade, escrever regras de senha por si só é uma burrice.

O que todo bom formulario de cadastro de senha deve ter é um qualitativo de senha, aquele famoso "senha fraca, media ou forte".

jamais proibir qualquer caracter ou restringir tamanho

3

O tamanho máximo até faz sentido se você estiver usando Bcrypt,

bcrypt has a maximum length input length of 72 bytes for most implementations. To protect against this issue, a maximum password length of 72 bytes (or less if the implementation in use has smaller limits) should be enforced when using bcrypt.

https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#:~:text=bcrypt%20has%20a%20maximum%20length,be%20enforced%20when%20using%20bcrypt

É o que fazemos aqui no TabNews:

https://github.com/filipedeschamps/tabnews.com.br/blob/f0db9131dd2ae08f6417d48b2d09b99c8baf6243/infra/migrations/1632278997051_create-user-table.js#L24-L28

[edit]

Fora isso, se você não definir um tamanho máximo, vai virar vetor de ataque.

[edit2]

Um comportamento interessante do bcrypt é que se você mandar uma string que ultrapassa o valor máximo, ele não nega. Ele irá descartar os caracteres restantes. Então se você colocar uma variação ao final desta string que ultrapassou o limite, tanto faz.

1

O tamanho máximo até faz sentido se você estiver usando Bcrypt

Alguma alternativa ao Bcrypt?
Não da pra fazer com o próprio node e seu módulo node:crypto?

1
0

Adendo: obrigar 1 caracter maiusculo, 1 especial e 1 numero só facilita ataques de força bruta.

além disso, a força da senha é menos importante do que um throttling bem implementado.

é só ter como exemplo bancos, que na sua maioria usam senhas "fracas" (6 digitos), mas que não perdoam caso você erre 3x.

tem alguém mais interessado em segurança do que um banco? rs

1

Mas ai tem um detalhe, se a houver um ataque ao bd e copiarem, tentarão força bruta e pequenas senhas serão fácilmente descobertas.

Ainda mais se for como a galera anda fazendo com placa de vídeo, esses dias eu vi que uma senha com 8 caracteres alfanuméricos é um tempo ridículo para força bruta com gpu, de tão pouco tempo que é.

1
1

Lembrei de um caso de um hospedagem de sites que já tive a "oportunidade" de utilizar anos atrás.

Para o acesso via FTP, a senha de usuário poderia ser de 6 a 20 caracteres, mas o serviço de FTP só funcionava se a senha tivesse exatamente 8 caracteres. E só descobrimos isso pq acionamos o suporte da plataforma.