CSRF (Cross-Site Request Forgery)
Como Explorar
CSRF permite que um atacante induza um usuário autenticado a executar ações indesejadas em uma aplicação web na qual está autenticado. O atacante geralmente engana a vítima para clicar em um link ou submeter um formulário malicioso.
terminal
Exemplo:
<form action='https://site-vulneravel.com/transferir' method='POST'>
<input type='hidden' name='valor' value='1000'>
<input type='hidden' name='destino' value='atacante'>
<input type='submit' value='Transferir'>
</form>
- O usuário precisa estar autenticado no site alvo.
- O atacante induz a vítima a acessar uma página/controlar um formulário.
- O navegador envia automaticamente os cookies de sessão.
Por que acontece
CSRF ocorre quando a aplicação não valida a origem das requisições e confia apenas nos cookies de sessão. O navegador envia automaticamente os cookies, permitindo que requisições maliciosas sejam aceitas como legítimas.
- Ausência de tokens anti-CSRF.
- Falta de validação de origem (header Referer/Origin).
- Requisições sensíveis aceitas apenas com cookie de sessão.
Como Corrigir
- Implemente tokens anti-CSRF em formulários e requisições sensíveis.
- Valide o header Origin e Referer no backend.
- Evite aceitar requisições sensíveis apenas com cookie de sessão.
terminal
// Exemplo de validação de token CSRF em Node.js (Express)
app.post('/transferir', (req, res) => {
if (req.body.csrfToken !== req.session.csrfToken) {
return res.status(403).send('CSRF token inválido');
}
// ...processa transferência...
});