Sobes.tech
Junior

Ce este CSRF?

sobes.tech AI

Răspuns de la AI

CSRF (Cross-Site Request Forgery) — este un tip de atac în care un atacator determină utilizatorul să execute acțiuni nedorite pe un site web unde utilizatorul este deja autentificat.

Esența atacului constă în faptul că un site rău intenționat sau un email conține o solicitare pe care browserul utilizatorului o trimite automat către site-ul țintă. Dacă utilizatorul este autentificat pe site-ul țintă, browserul său va trimite cookie-urile, iar solicitarea va fi executată cu drepturile sale.

De exemplu, aceasta poate fi o solicitare de schimbare a parolei, transfer de bani sau ștergere a unui cont.

Pentru a se proteja împotriva CSRF, se folosesc diverse metode:

  • Token-uri CSRF: token-uri secrete și unice pentru fiecare solicitare, generate pe server și trimise cu fiecare formular sau solicitare AJAX. Serverul verifică dacă token-ul primit corespunde.
  • Atributul cookie SameSite: stabilește o regulă conform căreia cookie-urile sunt trimise către server doar pentru solicitări din același domeniu în care au fost setate.
  • Verificarea antetelor Origin și Referer: serverul verifică de unde provine solicitarea. Totuși, aceste antete pot fi modificate de un atacator sau pot lipsi în anumite cazuri.
  • Reautentificare pentru acțiuni critice: solicitarea parolei înainte de a efectua operațiuni importante.

Cel mai eficient și comun metodă este utilizarea token-urilor CSRF.

// Exemplu de adăugare a unui token CSRF într-un formular
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="token generat de server">
  <input type="number" name="amount">
  <button type="submit">Transfer</button>
</form>
// Exemplu de verificare a token-ului CSRF pe server (Node.js cu Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Procesarea solicitării după verificarea cu succes a token-ului
});