O que fazer antes de guardar ou usar senhas na sua aplicação? Este problema sempre gera discussões. Neste artigo, veja como e por que fazer isso direito.

Esta é a primeira parte de uma série sobre Autenticação. Hoje, vamos falar sobre como guardar senhas com segurança.

Imagem de segurança

Por que guardar senhas com segurança?

As senhas são uma dor de cabeça! Os ataques muitas vezes vêm de dentro. Quer proteger o sistema? Proteja-o dos próprios desenvolvedores.

Quem já fez certificação PCI/DSS sabe: a maioria das dicas de segurança serve para proteger o sistema dos próprios funcionários, especialmente a galera de TI.

Dica: Sempre que der, use um sistema ou framework já pronto para autenticação. Autenticação amadora de quem não entende gera problemas.

Mas se não tiver jeito, como guardar senhas no seu sistema do jeito certo?

Jeitos errados

Vamos ver alguns erros comuns. É assim que aprendemos a fazer certo.

Texto Puro

Texto Puro é como dar suas informações de graça. Vai mesmo colocar as senhas no Pastebin? Melhor não, né?

Codificado

Codificar? Parece seguro, mas é só uma ilusão. Acha que Base64 protege alguma coisa? Está mais para um truque velho que sempre dá errado.

Criptografado

Criptografar de qualquer jeito não é muito melhor. Ajuda sim, mas e a chave? Vai deixar num post-it?

Imagem de segurança

Criptografia e Hashing

Confusão comum: devs misturam criptografia com hashing. Uma senha criptografada é só um texto estranho que alguém pode reverter.

Já hashing é outro papo. Não tem chave. É como um moedor de carne, não dá para reverter.

Se usar MD5, SHA-* (SHA1, SHA2, SHA3 etc...), é hashing.

Hash - O jeito certo

Agora sim! Com hashing, você tem um dado seguro. Dá para verificar se a senha está correta sem precisar saber qual é a senha do usuário.

Por que usar hash?

Mesmo se o atacante ultrapassar a primeira linha de defesa, ele terá trabalho para descobrir a senha real.

O hash protege a senha do usuário. É uma segunda linha de defesa. Se feita direito, vai ser quase impossível descobrir a senha do hash.

Só usar hash já garante segurança?

Claro que não. São vários algoritmos, e você precisa escolher certo.

Um bom algoritmo de hash para senha é lento, resistente a ataques de hardware.

Na Parte 2, vamos falar dos pontos fracos do Hash, tipos comuns de ataque e melhores algoritmos para usar.

Conclusão

Falamos que hash é a melhor técnica para guardar senhas. Não é qualquer hash, há falhas. Vamos falar mais disso na Parte 2.

Espero que essa primeira parte tenha sido útil.

Referências