Questão 66407

Tecnologia da Informação · 2025

Questão

ID 66407

Disciplina: Tecnologia da Informação

Assuntos: Injeção SQL (SQL Injection), Práticas de Programação Segura e Revisão de Código

Ano: 2025 Banca: PERFIL - ENADE Órgão: Primeiro Simulado Pnd


Uma professora de Banco de Dados está ensinando sobre segurança e, especificamente, sobre ataques de injeção de SQL (SQL Injection). Ela percebe que os alunos compreendem o conceito em teoria, mas não internalizam a gravidade do risco ou as formas corretas de prevenção. Para criar uma experiência de aprendizado mais impactante, ela desenvolve uma atividade prática em um ambiente controlado. Ela cria uma página de login simples em PHP que se conecta a um banco de dados de usuários. A consulta SQL para verificar o login é construída de forma vulnerável, através da concatenação de strings:

`$sql = "SELECT * FROM usuarios WHERE nome='" . $_POST['username'] . "' AND senha='" . $_POST['password'] . "';";`

Ela apresenta um texto sobre a vulnerabilidade, retirado do OWASP (Open Web Application Security Project): "A injeção de SQL é uma das vulnerabilidades de aplicações web mais antigas e perigosas. Ela ocorre quando dados não confiáveis (como a entrada do usuário) são enviados para um interpretador como parte de um comando ou consulta. Os dados maliciosos do atacante podem enganar o interpretador para que execute comandos não intencionais ou acesse dados sem a devida autorização." A tarefa dos alunos é dupla: primeiro, eles devem atuar como 'atacantes' e tentar fazer login como o usuário 'admin' sem saber a senha, usando técnicas de injeção de SQL no campo de nome de usuário. Segundo, eles devem atuar como 'defensores' e corrigir o código PHP para torná-lo imune a esse tipo de ataque.

Qual das seguintes opções descreve corretamente uma entrada de dados que exploraria a vulnerabilidade (o ataque) e a técnica de programação que a corrigiria (a defesa)?

Alternativas da questão 66407
Pular para o conteúdo principal