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