Imagem de fundo

Durante um projeto de desenvolvimento de uma solução, um desenvolvedor constrói a segui...

Durante um projeto de desenvolvimento de uma solução, um desenvolvedor constrói a seguinte função em Python:


def autenticar(usuario, senha):

query = f"SELECT * FROM usuarios WHERE

nome = '{usuario}' AND senha = '{senha}'"

resultado = banco.executar(query)

if resultado:

return "Login bem-sucedido"

else:

return "Credenciais inválidas"


luz dos princípios e boas práticas de código seguro, assinale a alternativa CORRETA.


A

O código está seguro, pois utiliza interpolação de strings para montar a consulta SQL, o que facilita a leitura e evita erros de sintaxe; além disso, o retorno genérico em caso de falha impede vazamento de informações sensíveis.


B

A principal vulnerabilidade está na ausência de criptografia da senha, sendo recomendável aplicar um algoritmo de hash como SHA-1 diretamente na string da senha após armazená-la ou compará-la no banco de dados.


C

O código apresenta risco de injeção de SQL, pois concatena diretamente os parâmetros do usuário na query, de modo que a solução adequada envolve o uso de consultas parametrizadas e o armazenamento de senhas com hash seguro.


D

A revisão de código deve focar apenas na lógica de autenticação e não precisa considerar a forma como a consulta é construída, pois a responsabilidade pela segurança da consulta é do banco de dados.