Questão de Segurança da Informação — Ataques a Aplicações Web (XSS, CSRF, SQL Injection etc.) — CESPE / CEBRASPE 2024
Segurança da Informação›Ataques a Aplicações Web (XSS, CSRF, SQL Injection etc.)
Código
ce404026
Banca
CESPE / CEBRASPE
Órgão
CAU BR
Ano
2024
Cargo
Ana ( )
Julgue o próximo item, a respeito de XSS (cross-site scripting).
https://www.apenasexemplo.com.br/?name=<scrip t>alert(1)</script> é um exemplo de XSS Reflected e será executado no navegador do usuário.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
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”.
XSS Reflected: injeção de script via URL
✅ CERTO. A URL apresentada é um exemplo clássico de XSS Reflected (não persistente), pois o código malicioso é embutido em um parâmetro da URL (name) e, se a aplicação não validar/sanitizar essa entrada, o navegador do usuário executará o script alert(1) ao carregar a página. O XSS Reflected é caracterizado exatamente por isso: o payload viaja na requisição (geralmente na URL) e é refletido na resposta, sendo executado no navegador da vítima.
O XSS (Cross-Site Scripting) é uma vulnerabilidade de segurança em aplicações web que permite a um atacante injetar scripts maliciosos (geralmente JavaScript) em páginas visualizadas por outros usuários. O nome "cross-site" vem do fato de o script ser executado no contexto de um site confiável, mas originado de uma fonte não confiável. O objetivo é fazer o navegador da vítima executar código arbitrário, o que pode levar a roubo de cookies, sequestro de sessão, redirecionamento para sites maliciosos, alteração de conteúdo da página, entre outros danos.
Existem três tipos principais de XSS, que se diferenciam pela forma como o payload é entregue e persistido:
Tipo
Característica
Exemplo de vetor
Reflected (não persistente)
O código malicioso é incluído na URL (ou em parâmetros de formulário) e refletido na resposta HTTP sem sanitização. É executado uma única vez, no navegador da vítima que clicar no link malicioso.
https://site.com/?name=<script>alert(1)</script>
Stored (persistente)
O código malicioso é armazenado no servidor (em banco de dados, fórum, comentários) e executado por todos os usuários que acessarem a página.
Comentário em um fórum contendo <script>...</script>
DOM-based
A vulnerabilidade está no código JavaScript do lado do cliente, que manipula o DOM sem sanitizar dados vindos de fontes como location.hash ou document.URL. O payload não chega a ser enviado ao servidor.
https://site.com/#<script>alert(1)</script>
No caso da questão, a URL https://www.apenasexemplo.com.br/?name=<script>alert(1)</script> é um exemplo típico de XSS Reflected: o parâmetro name recebe o payload diretamente na URL. Se a aplicação refletir esse valor na página sem codificação adequada, o navegador interpretará <script> como código e executará alert(1). O ataque é "refletido" porque o servidor devolve (reflete) a entrada do usuário na resposta, sem armazená-la.
A execução ocorre no navegador do usuário, não no servidor. Isso é uma característica fundamental do XSS: o script malicioso roda no contexto de segurança do site confiável, com acesso a cookies, tokens de sessão e outras informações do usuário. O navegador não tem como distinguir um script legítimo de um injetado, pois ambos vêm da mesma origem.
A pegadinha que a banca explora aqui é a confusão entre XSS Reflected e XSS Stored. Muitos candidatos podem achar que, por o código estar na URL, ele seria "persistente" ou que não seria executado. Na verdade, o XSS Reflected é exatamente esse: o payload viaja na URL e é executado no navegador da vítima quando ela clica no link. O XSS Stored, por outro lado, persiste no servidor e afeta todos os visitantes da página.
NÃO CAIA NESSA!
A banca pode tentar confundir o candidato fazendo-o acreditar que, por o código estar na URL, ele não seria executado ou seria um XSS Stored. Lembre-se: XSS Reflected = payload na URL, executado no navegador da vítima; XSS Stored = payload armazenado no servidor, executado para todos os usuários. A distinção está na persistência, não na forma de entrega.
XSS (Cross-Site Scripting): Reflected (não persistente) (Payload na URL, Executado no navegador da vítima); Stored (persistente) (Payload no servidor, Executado para todos os usuários); DOM-based (Payload no lado do cliente, Não chega ao servidor)
Item — ✅ Correto ⟵ GABARITO
A afirmação está correta. A URL apresentada é um exemplo de XSS Reflected, pois o código malicioso está embutido no parâmetro name da URL. Quando o usuário clica nesse link, o navegador envia a requisição ao servidor; se a aplicação refletir o valor do parâmetro na página sem sanitização, o navegador executará o script alert(1). Isso caracteriza o XSS Reflected, que é executado no navegador do usuário, conforme descrito no enunciado.