Questão nº 34
Questão de Tecnologia da Informação · FCC TRT15 2024 (nº 34)
Um Tribunal identificou que sua aplicação web foi explorada por uma vulnerabilidade de injeção SQL. Após a análise do incidente, o time de desenvolvimento decidiu implementar práticas que minimizam o risco de ocorrência dessas falhas no código-fonte. A técnica mais adequada para prevenir vulnerabilidades como a identificada no incidente é
- Ausar mecanismos de hashing para proteger os dados enviados às consultas SQL.
- Butilizar variáveis de ambiente para armazenar as credenciais de banco de dados e incluí-las diretamente nas consultas SQL.
- Cusar concatenação de strings para gerar as consultas SQL.
- Dutilizar parâmetros (prepared statements) para consultas SQL. (alternativa correta)
- Eimplementar análise estática de código após o deployment.
Resposta comentada
Gabarito Alternativa D
SQL Injection é um ataque onde dados maliciosos inseridos por um usuário são interpretados como parte de um comando de banco de dados (SQL), permitindo que o atacante manipule a consulta original.
- (A) Incorreta: Mecanismos de hashing são usados para proteger a integridade ou confidencialidade de dados (como senhas), mas não impedem que uma string maliciosa seja interpretada como código SQL pelo banco de dados.
- (B) Incorreta: Armazenar credenciais em variáveis de ambiente é uma boa prática de segurança para gerenciar segredos, mas não aborda a vulnerabilidade de injeção SQL, que ocorre quando dados de entrada do usuário são mal tratados na construção da consulta.
- (C) Incorreta: Usar concatenação de strings para gerar consultas SQL é a principal causa das vulnerabilidades de injeção SQL, pois permite que a entrada do usuário altere a estrutura da consulta. Armadilha da banca: Esta alternativa descreve como a injeção SQL acontece, não como ela é prevenida. É tentador porque "gerar consultas" é o que se busca, mas a concatenação direta é o método inseguro.
- (D) Correta: Prepared statements (ou consultas parametrizadas) separam o código SQL dos dados de entrada. O banco de dados pré-compila a consulta e trata os parâmetros como dados, nunca como código executável, neutralizando a injeção SQL.
- (E) Incorreta: Análise estática de código é uma ferramenta valiosa para detectar vulnerabilidades, mas é uma técnica de auditoria ou verificação, não uma prática de codificação que previne a ocorrência da falha no código-fonte, especialmente se feita apenas após o deployment.
Fonte: FCC TRT15 2024 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.