Política de senha
Comumente usuários utilizam senhas que são fáceis de lembrar e também fáceis de serem descobertas. Para evitar que a senha utilizada seja facilmente adivinhável, precisamos definir uma política de senha para nosso sistema. Essa política de senha define uma complexidade mínima para a senha.
Uma política segura e amplamente utilizada é:
- no mínimo 8 caracteres;
- uma letra maiúscula;
- uma letra minúscula;
- um número.
Armazenamento
As senhas devem sempre ser armazenadas de forma criptografada. O algoritmo de criptografia utilizado deve realizar uma criptografia irreversível. Uma estratégia também muito importante é adicionar um salt a senha.
Um bom algoritmo para hash de senha é o BCrypt:
- já incluí o salt no momento da criptografia (então não é preciso armazenar esse salt);
- duas senhas idênticas geram hashes diferentes;
- tem um alto custo de processamento, impedindo ataques de força bruta.
salt é um valor único que é adicionado a senha para dificultar uma ação de tentativa e erro ou até mesmo busca em rainbow tables
rainbow tables são tabelas com valores pré-computados de resultados criptografias utilizadas no lugar de ataques de tentativa e erro
Mecanismo de reset de senha
Sua aplicação precisa ter um mecanismo que possibilite ao usuário trocar a senha. Isso é importante para casos em que existem regras de negócio e o titular das informações precise fazer a troca de senha ou caso haja vazamento de dados e seja necessário forçar uma troca de senha dos usuários. (Nesses casos de vazamento de dados é importante também poder finalizar a sessão de todos dispositivos que o usuário está autenticado.)
Autenticação em dois fatores
Negócios que lidem com transações financeiras ou que armazenem dados de extrema importância precisam de um nível extra de segurança. Para isso é recomendado utilizar a autenticação em dois fatores. Essa autenticação envia um token via celular ou e-mail para o usuário poder efetuar uma ação.
Eventos de alteração cadastral
Toda alteração em dados cadastrais (e.g. nome, senha, cpf, etc) deve emitir um comunicado ao titular do cadastro. Também são inclusos casos de troca de senha. Um e-mail avisando da mudança já é suficiente.