Inclusão de Script entre Sites (XSSi)
A inclusão de script entre sites (Cross-Site Script Inclusion, XSSi) é uma técnica usada por atacantes para incluir scripts maliciosos de um domínio externo em uma página web legítima. Isso pode ocorrer quando um site incorpora scripts de terceiros sem verificação adequada, resultando em potenciais vulnerabilidades de segurança.
Riscos
- Execução de scripts maliciosos no contexto do site legítimo.
- Roubo de cookies de sessão e outras informações sensíveis do usuário.
- Redirecionamento para páginas falsas de phishing.
- Manipulação de conteúdo exibido no site.
- Comprometimento da integridade e confiança do site.
Como os Hackers Executam o Ataque
Os hackers podem executar ataques XSSi de várias maneiras, incluindo:
- Incluindo scripts maliciosos através de links diretos em elementos como
<script>
, <img>
, <iframe>
ou outros.
- Manipulando a inclusão de recursos externos, como bibliotecas JavaScript, de fontes não confiáveis.
- Explorando sites que permitem aos usuários incorporar conteúdo externo sem validação adequada.
Exemplo de Código Vulnerável
<!-- Exemplo de código HTML vulnerável a XSSi -->
<html>
<head>
<title>Página Vulnerável</title>
<script src="https://site-malicioso.com/script.js"></script>
</head>
<body>
<h1>Olá, mundo!</h1>
</body>
</html>
No exemplo acima, o script malicioso hospedado em https://site-malicioso.com/script.js
é incluído na página sem verificação adequada, o que pode levar a execução de código não autorizado no contexto do site.
Boas Práticas
- Validar e sanitizar todas as entradas de dados recebidas de usuários.
- Utilizar listas de URLs permitidas (whitelisting) para scripts e recursos externos.
- Implementar cabeçalhos de segurança HTTP como Content Security Policy (CSP) para mitigar riscos XSSi.
- Monitorar e auditar regularmente o código do site em busca de vulnerabilidades.
- Educacionalizar desenvolvedores e usuários sobre práticas seguras na web.
Más Práticas
- Permitir a inclusão de scripts e recursos externos sem validação adequada.
- Confiança exclusiva em mecanismos de defesa do lado do cliente contra ataques XSS.
- Não monitorar ou auditar regularmente o código do site para vulnerabilidades.
- Ignorar as atualizações de segurança e patches para frameworks e bibliotecas.
- Não educar desenvolvedores e usuários sobre práticas seguras na web.