Senha no Banco (mesmo criptografada) é PERIGO!
Quando visito clientes e parceiros sempre faço a seguinte pergunta: você guarda a senha do seu usuário no banco de dados?
Infelizmente o número de respostas SIM ainda é alto. Todos que fazem isto também afirmam que criptografam a senha e que isto os torna seguros.
O problema com este tipo de solução é que, uma vez com a senha criptografada na mão, ainda é possível quebrá-la. Pior: uma vez quebrada uma senha, todas as outras costumam ficar bastante ameaçadas.
Uma solução melhor é a de não armazenar a senha, mas sim um hash da senha. Com isto, mesmo que alguém consiga o acesso à base com senha, ele não conseguirá chegar à senha final.
Andei procurando artigos com dicas sobre o assunto e encontrei poucos. Aqui está o que eu achei:
- Existe um artigo que fala bem deste tópico em: https://www.macronimous.com/resources/Secure_Password_Programming.asp
- Lembrem-se que podemos usar SHA256 com Salt, pois é mais forte que SHA1, como este artigo mostra: “How To: Hash Data with Salt (C#/VB.NET)” https://www.obviex.com/Samples/Hash.aspx
- Outro artigo interessante é o https://blogs.msdn.com/b/bethmassi/archive/2007/06/06/login-form-parameterized-queries-part-2.aspx
E lembrem-se: não guardem senhas no banco (nem no código ou em arquivos de config).
Abraços
Comments
Anonymous
November 20, 2010
Olá Otávio! Obrigado pelo post. Se as boas práticas de desenvolvimento (test-first, design by contracts, SOLID, etc.) só agora estão ganhando maior adoção no Brasil, a questão da segurança e threat modeling ainda parece ser privilégio de poucos. Fazendo o gancho com sua recomendação de usar SHA256 ao invés do SHA1, tem esse post bacana do blog "The Security Development Lifecycle" da própria Microsoft (blogs.msdn.com/.../banned-crypto-and-the-sdl.aspx). Abraço, --Paulo (PS: as URL's dos links que você recomendou estão com problema)Anonymous
November 20, 2010
Olá, Otavio, parabéns pelo artigo, mas os links estão visiveis porém o link está errado, esta direcionando para um outlook!Anonymous
November 20, 2010
Pessoal, Obrigado pelo apoio e aviso sobre os links. Já estão corretos! AbraçosAnonymous
November 29, 2010
The comment has been removedAnonymous
December 03, 2010
The comment has been removedAnonymous
December 06, 2010
The comment has been removed