CSRF útok přinutí přihlášeného uživatele provést nechtěnou akci. Prohlížeč automaticky přiloží cookies, útočník toho využívá.
Jak CSRF funguje¶
Uživatel přihlášen na bank.com. Navštíví evil.com se skrytým formulářem, který odešle POST na bank.com/transfer. Prohlížeč přiloží session cookie.
Obrana: CSRF Token + SameSite¶
Django — vestavěná ochrana:¶
Express.js¶
const csrf = require(‘csurf’); app.use(csrf({ cookie: true }));
SameSite Cookie¶
Set-Cookie: session=abc; SameSite=Lax; Secure; HttpOnly
Moderní přístup¶
- SameSite=Lax je default v moderních prohlížečích
- CSRF token pro state-changing operace
- API s Bearer token v Authorization headeru je imunní vůči CSRF
Klíčový takeaway¶
SameSite=Lax + CSRF tokeny pro formuláře. API s Bearer tokenem je proti CSRF imunní.
securitycsrfweb