Questão nº 82
Questão de Informática Forense · CEBRASPE PF 2025 (nº 82)
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.
Considere que um atacante tenha acesso à aplicação em apreço e realize a seguinte chamada.
http://prova.com/busca?username=admin'--
Nesse caso, essa chamada equivale à consulta SQL a seguir.
SELECT * FROM users WHERE username = 'admin'--'
Resposta comentada
O conceito-chave aqui é Injeção SQL (SQL Injection): quando o código junta o dado do usuário direto no texto do comando SQL, o atacante consegue "escapar" das aspas e inserir comandos próprios. No PHP, o -- é um comentário de linha no MySQL, então tudo que vem depois dele é ignorado pelo banco.
- Correta: Certo. A chamada envia
username=admin'--, que é inserido na query como'admin'--'. As aspas simples apósadminfecham a string, e o--comenta o resto ('), fazendo a consulta buscar apenasusername = 'admin', sem exigir senha.
Fica de olho: A banca pode trocar o -- por # (comentário no MySQL) ou usar ' OR '1'='1 — nesses casos, a query resultante seria diferente da mostrada no item, tornando-o errado se a descrição não bater exatamente com o que a chamada produz.
Fonte: CEBRASPE PF 2025 Perito Criminal Federal - Informática Forense. Reproduzida para fins de estudo.