Junior
O que é CSRF?
sobes.tech IA
Resposta da IA
CSRF (Cross-Site Request Forgery) — é um tipo de ataque em que um atacante faz com que o utilizador realize ações indesejadas num website onde já está autenticado.
A essência do ataque reside no facto de que um site malicioso ou um email contém uma requisição que o navegador do utilizador envia automaticamente ao site alvo. Se o utilizador estiver autenticado no site alvo, o seu navegador enviará cookies, e a requisição será executada com os seus privilégios.
Por exemplo, pode ser uma requisição para alterar a palavra-passe, transferir dinheiro ou eliminar uma conta.
Para proteger contra CSRF, são utilizados vários métodos:
- Tokens CSRF: Tokens secretos e únicos para cada requisição, gerados no servidor e enviados com cada formulário ou requisição AJAX. O servidor verifica a correspondência do token recebido.
- Atributo SameSite nas cookies: Define uma regra segundo a qual as cookies são enviadas ao servidor apenas em requisições do mesmo domínio onde foram definidas.
- Verificação dos cabeçalhos Origin e Referer: O servidor verifica de onde a requisição provém. No entanto, estes cabeçalhos podem ser modificados por um atacante ou não estar presentes em alguns casos.
- Requerer reautenticação para ações críticas: Solicitar a palavra-passe antes de realizar operações importantes.
O método mais eficaz e comum é o uso de tokens CSRF.
// Exemplo de adição de token CSRF num formulário
<form action="/transfer" method="POST">
<input type="hidden" name="_csrf_token" value="token_gerado_pelo_servidor">
<input type="number" name="amount">
<button type="submit">Transferir</button>
</form>
// Exemplo de verificação do token CSRF no servidor (Node.js com Express)
app.post('/transfer', csrfProtection, (req, res) => {
// Processamento da requisição após verificação bem-sucedida do token
});