Questão nº 81
Questão de Informática Forense · CEBRASPE PF 2025 (nº 81)
Certa aplicação web tem uma funcionalidade de busca de usuários por nome, realizada em PHP, conforme os parâmetros a seguir.
$username = $_GET['username'];
$query = "SELECT * FROM users WHERE username = '$username'";
$result = mysqli_query($connection, $query);A partir dessas informações, julgue os itens subsequentes, considerando o que é definido pelo OWASP Top 10 de 2021 no que diz respeito a falhas de aplicação.
Na URL a seguir, o uso de -- indica o início de um comentário em SQL, de modo que o restante da consulta é ignorado.
http://prova.com/busca?username=admin'--
Resposta comentada
Injeção SQL acontece quando um site monta uma consulta ao banco de dados juntando texto digitado pelo usuário direto no comando. No código, o valor de username é colocado dentro de aspas simples na query, então qualquer caractere especial digitado vira parte do comando SQL. O -- é um comentário em SQL (e também em PHP, mas aqui o contexto é SQL): tudo que vier depois dele é ignorado pelo banco.
- Correta: Certo. Na URL,
admin'fecha a aspas simples aberta no código e--comenta o resto ('final da query), fazendo a consulta buscar só poradmin, ignorando qualquer condição extra que viria depois.
Fica de olho: a banca pode trocar -- por # ou por /* (outros comentários SQL) e afirmar que não funcionam — mas funcionam, dependendo do SGBD. Ou pode inverter: dizer que -- precisa de um espaço depois (-- ) para comentar em alguns bancos, e marcar como errado um caso sem espaço — mas no MySQL o -- exige espaço, então se a URL não tiver espaço, o comentário não acontece e o item seria errado.
Fonte: CEBRASPE PF 2025 Perito Criminal Federal - Informática Forense. Reproduzida para fins de estudo.