Know-How
CSRF ochrana — Cross-Site Request Forgery
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: {% csrf_token %}
# 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í.