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
});