Junior
Co je CSRF?
sobes.tech AI
Odpověď od AI
CSRF (Cross-Site Request Forgery) — je typ útoku, při kterém útočník donucuje uživatele, aby provedl nežádoucí akce na webové stránce, na které je již autentizován.
Podstata útoku spočívá v tom, že škodlivá stránka nebo e-mail obsahuje požadavek, který prohlížeč uživatele automaticky odešle cílové stránce. Pokud je uživatel přihlášen na cílové stránce, jeho prohlížeč odešle cookies a požadavek bude proveden s jeho právy.
Například to může být požadavek na změnu hesla, převod peněz nebo smazání účtu.
Pro ochranu před CSRF se používají různé metody:
- CSRF tokeny: tajné, jedinečné tokeny pro každý požadavek, které jsou generovány na serveru a odesílány s každým formulářem nebo AJAX požadavkem. Server kontroluje shodu obdrženého tokenu.
- Atribut cookie SameSite: nastavuje pravidlo, podle kterého jsou cookies odesílány serveru pouze při požadavcích ze stejné domény, ze které byly nastaveny.
- Kontrola hlaviček Origin a Referer: server kontroluje, odkud požadavek přišel. Tyto hlavičky však mohou být změněny útočníkem nebo nemusí být přítomny v některých případech.
- Požadavek na opětovnou autentizaci pro kritické akce: požadavek na zadání hesla před provedením důležitých operací.
Nejúčinnější a nejrozšířenější metodou je použití CSRF tokenů.
// Příklad přidání CSRF tokenu do formuláře
<form action="/transfer" method="POST">
<input type="hidden" name="_csrf_token" value="token generovaný serverem">
<input type="number" name="amount">
<button type="submit">Převést</button>
</form>
// Příklad kontroly CSRF tokenu na serveru (Node.js s Express)
app.post('/transfer', csrfProtection, (req, res) => {
// Zpracování požadavku po úspěšné kontrole tokenu
});