Sobes.tech
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
});