XSS - Cross-Site-Scripting
Conceito
XSS (Cross-Site Scripting) é uma vulnerabilidade de segurança em sites que permite que um atacante injete scripts(geralmente JavaScript) maliciosos em páginas da web. Esses scripts podem ser apresentados e executados no navegador de quem acessa o site, sem que o usuário perceba.
Imagine que você entra em um site e, sem saber, o site carrega um código malicioso que pode roubar suas informações, como senhas ou cookies, ou até fazer ações em nome de você, como enviar mensagens ou alterar dados.
Vítima: Usuário.
Existem três tipos principais de XSS:
- Stored XSS: O código malicioso é armazenado no servidor e exibido para outros usuários.
O objetivo mais comum é a captura dos "cookies" da vítima, enviando-os para um site controlado pelo atacante. - Reflected XSS: O código malicioso é refletido de volta ao usuário sem ser armazenado, geralmente via um link malicioso.
- DOM-based XSS: O código malicioso afeta o comportamento do site diretamente no navegador, sem interagir com o servidor.
URL contém... | Provável tipo de XSS |
---|---|
?param=<script>...</script> | Reflected XSS |
#<script>...</script> | DOM-Based XSS |
Link sem script, mas resultado carrega XSS | Stored XSS (oculto na página) |
Prevenção
-
Validação e Sanitização de Entrada de Dados: Sempre valide e sanitize os dados recebidos de usuários antes de processá-los ou exibi-los. Isso inclui filtrar caracteres especiais, como
<
,>
,"
,'
e&
, que podem ser usados para injetar scripts. Bibliotecas como OWASP Java HTML Sanitizer ajudam a garantir que o conteúdo seja seguro. -
Escapar Conteúdo ao Exibir no Navegador: Ao exibir dados dinâmicos na página (como comentários ou nomes de usuários), escape os caracteres especiais, transformando-os em sua representação segura (por exemplo,
<
em<
e>
em>
). Isso evita que o navegador interprete o conteúdo como código HTML ou JavaScript. -
Uso de Cabeçalhos HTTP de Segurança: Implementar cabeçalhos HTTP como
Content-Security-Policy (CSP)
, que define de onde os scripts podem ser carregados e executados, ajuda a reduzir o risco de XSS, bloqueando fontes não confiáveis de código. O cabeçalhoX-XSS-Protection
, embora não seja tão eficaz por si só, também pode ser configurado para fornecer uma camada adicional de proteção.
FGV - 2024 - TCE-PA - Auditor de Controle Externo - Área de Informática - Analista de Sistemas
Em uma aplicação web que exibe dados dinâmicos provenientes de usuários, o método mais eficaz para prevenir ataques de Cross-Site Scripting (XSS), entre as opções abaixo, é
a) utilizar HTTPS para todas as comunicações entre cliente e servidor.
b) implementar cabeçalhos de segurança HTTP como Content Security Policy (CSP).
c) validar os dados do usuário apenas no lado do cliente utilizando JavaScript.
d) utilizar tokens de sessão com tempo de expiração curto.
e) fazer backup regular dos dados do usuário.
Mostrar resposta
- 🚨 Alternativa: B.