Sobes.tech
Junior

Cos'è CSRF?

sobes.tech AI

Risposta dell'AI

CSRF (Cross-Site Request Forgery) — è un tipo di attacco in cui un malintenzionato induce l'utente a compiere azioni indesiderate su un sito web in cui è già autenticato.

L'attacco si basa sul fatto che un sito dannoso o un'email contiene una richiesta che il browser dell'utente invia automaticamente al sito target. Se l'utente ha effettuato l'accesso al sito target, il suo browser invierà i cookie e la richiesta verrà eseguita con i suoi privilegi.

Ad esempio, può essere una richiesta di cambio password, trasferimento di denaro o eliminazione di un account.

Per proteggersi dal CSRF, si utilizzano vari metodi:

  • Token CSRF: token segreti e unici per ogni richiesta, generati dal server e inviati con ogni modulo o richiesta AJAX. Il server verifica la corrispondenza del token ricevuto.
  • Attributo SameSite del cookie: imposta una regola secondo cui i cookie vengono inviati al server solo per richieste dallo stesso dominio in cui sono stati impostati.
  • Verifica degli header Origin e Referer: il server verifica da dove proviene la richiesta. Tuttavia, questi header possono essere modificati da un attaccante o non essere presenti in alcuni casi.
  • Richiesta di ri-autenticazione per azioni critiche: richiede la password prima di eseguire operazioni importanti.

Il metodo più efficace e comune è l'uso di token CSRF.

// Esempio di aggiunta di un token CSRF in un modulo
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="token_generato_dal_server">
  <input type="number" name="amount">
  <button type="submit">Trasferisci</button>
</form>
// Esempio di verifica del token CSRF sul server (Node.js con Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Elaborazione della richiesta dopo verifica riuscita del token
});