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