Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023

Banco de DadosConsultas e Comandos em SQL
Código
qa537667
Banca
FUNDATEC
Órgão
IFC
Ano
2023
Cargo
PEBTT ( )

Em uma aplicação com entrada de dados e comunicação com um banco de dados no back-end, ___ é o ataque que explora uma vulnerabilidade da validação da entrada de dados, inserindo código malicioso em queries SQL para manipular o banco de dados.

 

Assinale a alternativa que preenche corretamente a lacuna do trecho acima.

  1. Afalha bizantina
  2. BXSS (Cross-Site Scripting)
  3. CSQL injection
  4. Dtentativa de phishing
  5. ESQL insertion
Revelar gabarito e comentário

GabaritoC — SQL injection

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

SQL Injection: o ataque de manipulação de consultas

Gabarito: letra C. O ataque descrito no enunciado — explorar a validação de entrada de dados para inserir código malicioso em queries SQL e manipular o banco de dados — é exatamente o SQL injection. A alternativa C é a única que nomeia corretamente essa técnica, que consiste em injetar comandos ou condições SQL através de campos de entrada do usuário, alterando a lógica da consulta original.

O SQL injection é uma das ameaças mais comuns e perigosas a sistemas que utilizam banco de dados. Ele ocorre quando uma aplicação constrói consultas SQL dinamicamente, concatenando diretamente a entrada do usuário sem a devida validação ou sanitização. O atacante, então, insere caracteres especiais e comandos SQL na entrada, fazendo com que a consulta execute ações não previstas pelo programador.

Um exemplo clássico é o ataque de manipulação durante o login. Suponha que uma aplicação execute a seguinte consulta para autenticar um usuário:

SELECT * FROM usuarios WHERE nomeusuario = 'jaime' and SENHA = 'senhajaime';

Se o campo de senha não for validado, o atacante pode digitar ' OR 'x' = 'x como senha, transformando a consulta em:

SELECT * FROM usuarios WHERE nomeusuario = 'jaime' and (SENHA = 'senhajaime' OR 'x' = 'x');

Como a condição 'x' = 'x' é sempre verdadeira, a consulta retorna a linha do usuário 'jaime' sem que o atacante conheça a senha real. Isso permite que ele se autentique como 'jaime' e execute todas as ações que esse usuário tem permissão para realizar.

A principal distinção que a banca explora nesta questão é entre SQL injection e XSS (Cross-Site Scripting). Enquanto o SQL injection ataca o banco de dados através da manipulação de consultas SQL, o XSS é um ataque que injeta scripts maliciosos (geralmente JavaScript) no navegador da vítima, explorando a falta de validação na saída de dados. O XSS não manipula diretamente o banco de dados; ele compromete a sessão do usuário no navegador.

Outra confusão comum é entre SQL injection e SQL insertion. O termo "SQL insertion" não é um ataque reconhecido na literatura de segurança; o termo correto e consagrado é "SQL injection". A banca utiliza "SQL insertion" como um distrator para testar se o candidato conhece a nomenclatura exata.

A pegadinha desta questão está na alternativa E, que usa um termo muito parecido com o correto, mas que não é o nome técnico do ataque. O candidato que não domina a terminologia pode ser induzido a escolher "SQL insertion" por parecer mais literal. No entanto, o termo consagrado na literatura e em provas é "SQL injection".

Guarde a fronteira entre os ataques: SQL injection manipula o banco de dados via consultas SQL; XSS injeta scripts no navegador da vítima; phishing é engenharia social para obter credenciais; falha bizantina é um conceito de tolerância a falhas em sistemas distribuídos. É exatamente nessa distinção que as alternativas se dividem.

Alternativa A — ❌ Incorreta

A falha bizantina é um conceito da área de sistemas distribuídos e tolerância a falhas. Refere-se a um componente que se comporta de forma arbitrária ou maliciosa, podendo enviar informações contraditórias para diferentes partes do sistema. Não tem relação com a exploração de vulnerabilidades de validação de entrada de dados em consultas SQL. O erro aqui é a total falta de aderência ao contexto do enunciado, que trata especificamente de ataques a bancos de dados via SQL.

Alternativa B — ❌ Incorreta

O XSS (Cross-Site Scripting) é um ataque que injeta scripts maliciosos (geralmente JavaScript) em páginas web, que são executados no navegador da vítima. Ele explora a falta de validação na saída de dados, não na entrada que vai para o banco de dados. O XSS pode roubar cookies, sessões ou redirecionar o usuário para sites maliciosos, mas não manipula diretamente consultas SQL. A confusão aqui é entre atacar o banco de dados (SQL injection) e atacar o navegador do usuário (XSS).

Alternativa C — ✅ Correta ⟵ GABARITO

O SQL injection é exatamente o ataque descrito: explora a vulnerabilidade na validação da entrada de dados para inserir código malicioso em queries SQL, manipulando o banco de dados. O atacante injeta comandos ou condições SQL através de campos de entrada, alterando a lógica da consulta original. Isso pode resultar em acesso não autorizado, exfiltração de dados, alteração ou exclusão de registros, e até execução de comandos no sistema operacional. É uma das ameaças mais comuns e perigosas a sistemas com banco de dados.

Alternativa D — ❌ Incorreta

A tentativa de phishing é um ataque de engenharia social em que o atacante se passa por uma entidade confiável (como um banco ou empresa) para enganar a vítima e obter informações sensíveis, como senhas e números de cartão de crédito. Geralmente é realizado por e-mail, mensagens ou sites falsos. Não envolve a manipulação de consultas SQL nem a exploração de vulnerabilidades de validação de entrada de dados em aplicações. O erro aqui é confundir um ataque de engenharia social com um ataque técnico de injeção de código.

Alternativa E — ❌ Incorreta

A SQL insertion é um termo que não corresponde ao nome técnico consagrado do ataque. O termo correto é SQL injection. A banca utiliza "SQL insertion" como um distrator para testar se o candidato conhece a nomenclatura exata. Embora "insertion" possa parecer mais literal (inserir código), o termo "injection" é o utilizado na literatura de segurança da informação e em provas de concursos. O erro aqui é a troca sutil do termo técnico correto por um similar, mas incorreto.

NÃO CAIA NESSA!

A banca adora trocar termos técnicos parecidos para confundir o candidato. Nesta questão, a armadilha está na alternativa E, que usa "SQL insertion" em vez de "SQL injection". O candidato que não domina a nomenclatura exata pode ser induzido a escolher a opção que parece mais literal. Além disso, a alternativa B (XSS) é outro distrator clássico, pois ambos os ataques envolvem injeção de código, mas em alvos diferentes: o SQL injection ataca o banco de dados, enquanto o XSS ataca o navegador da vítima. Com treino, você enxerga essas trocas de longe 💪

PEGA ESSA DICA!

Para fixar a distinção entre os ataques, monte uma tabela mental com o alvo de cada um:

Ataque

Alvo

Vetor

SQL injection

Banco de dados

Entrada de dados em consultas SQL

XSS

Navegador da vítima

Scripts injetados em páginas web

Phishing

Usuário

Engenharia social (e-mails, sites falsos)

Falha bizantina

Sistema distribuído

Componente com comportamento arbitrário

Na prova, ao ver "injeção de código em SQL", a resposta é sempre SQL injection. Desconfie de variações como "SQL insertion" ou "SQL manipulation" — o termo consagrado é "injection".

Gabarito: letra C

Link permanente: /questoes/qa537667