← Questões de Engenharia de Software

Engenharia de Software · FGV · 2022

Questão comentada de Engenharia de Software

As credenciais de acesso dos usuários de um aplicativo são armazenadas em um banco de dados e são utilizadas unicamente para acesso às funcionalidades do aplicativo. A equipe de desenvolvimento definiu como requisito não funcional que o sistema deve evitar que as senhas sejam obtidas por um invasor mesmo que o aplicativo ou banco de dados esteja comprometido. Para implementar o requisito não funcional, um modo de proteger as senhas dos usuários é:

Gabarito: C

Quando o assunto é senha, a ideia não é apenas "esconder" o valor no banco, mas torná-lo impraticável de recuperar mesmo se a base vazar. Em engenharia de software, a proteção correta de credenciais não usa criptografia reversível como solução principal, porque se a chave for descoberta, tudo volta a ficar legível. O caminho seguro é tratar a senha com hash, de preferência com salt, antes de armazená-la. O hash é uma função de mão única: você gera uma saída a partir da senha, mas não consegue voltar à senha original a partir do resultado. O salt, por sua vez, é um valor aleatório acrescentado à senha antes do hash para evitar ataques com tabelas pré-calculadas, como rainbow tables, e também para impedir que senhas iguais produzam o mesmo hash. Por isso, a alternativa C está correta: usar um algoritmo hash com salt antes de persistir as senhas no banco atende ao requisito de evitar que elas sejam obtidas por um invasor mesmo se o aplicativo ou o banco forem comprometidos. Em termos práticos, isso significa que o sistema não guarda a senha, guarda apenas um derivado seguro dela. Esse entendimento é o padrão de boas práticas da área e aparece de forma recorrente em guias de segurança como o OWASP, que recomenda hash forte e salt para armazenamento de senhas. Em prova, desconfie de soluções com criptografia reversível, chave secreta guardada no sistema ou algoritmos próprios: senha gosta de truque simples, não de mágica arriscada.

Continue treinando

Questões relacionadas