Sobes.tech
Junior

Čo je CSRF?

sobes.tech AI

Odpoveď od AI

CSRF (Cross-Site Request Forgery) — je typ útoku, pri ktorom útočník donúti používateľa vykonať neželané akcie na webovej stránke, na ktorej je už autentifikovaný.

Podstata útoku spočíva v tom, že škodlivá stránka alebo e-mail obsahuje požiadavku, ktorú prehliadač používateľa automaticky odošle cieľovej stránke. Ak je používateľ prihlásený na cieľovej stránke, jeho prehliadač odošle cookies a požiadavka bude vykonaná s jeho právami.

Napríklad, môže ísť o požiadavku na zmenu hesla, prevod peňazí alebo vymazanie účtu.

Na ochranu pred CSRF sa používajú rôzne metódy:

  • CSRF tokeny: tajné, jedinečné tokeny pre každú požiadavku, ktoré generuje server a odosiela s každým formulárom alebo AJAX požiadavkou. Server kontroluje zhodu prijatého tokenu.
  • SameSite atribút cookie: nastavuje pravidlo, podľa ktorého sa cookies odosielajú na server iba pri požiadavkách z toho istého domény, z ktorej boli nastavené.
  • Kontrola hlavičiek Origin a Referer: server kontroluje, odkiaľ požiadavka prišla. Tieto hlavičky však môžu byť zmenené útočníkom alebo môžu chýbať v niektorých prípadoch.
  • Vyžadovanie opätovnej autentifikácie pre kritické akcie: požiadavka na zadanie hesla pred vykonaním dôležitých operácií.

Najúčinnejšou a najbežnejšou metódou je použitie CSRF tokenov.

// Príklad pridania CSRF tokenu do formulára
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="token generovaný serverom">
  <input type="number" name="amount">
  <button type="submit">Prevod</button>
</form>
// Príklad kontroly CSRF tokenu na serveri (Node.js s Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Spracovanie požiadavky po úspešnej kontrole tokenu
});