Junior
Šta je CSRF?
sobes.tech АИ
Одговор од АИ
CSRF (Cross-Site Request Forgery) — je vrsta napada pri katerem napadalec prisili uporabnika, da izvede nezaželene akcije na spletni strani, kjer je že avtenticiran.
Jedro napada je, da zlonamerno spletno mesto ali e-pošta vsebuje zahtevo, ki jo brskalnik uporabnika samodejno pošlje ciljni spletni strani. Če je uporabnik prijavljen na ciljni strani, bo njegov brskalnik poslal piškotke, in zahteva bo izvedena z njegovimi pravicami.
Na primer, to je lahko zahteva za spremembo gesla, prenos denarja ali brisanje računa.
Za zaščito pred CSRF se uporabljajo različne metode:
- CSRF žetoni: skrivni, unikatni žetoni za vsako zahtevo, ki jih generira strežnik in se pošlje z vsakim obrazcem ali AJAX zahtevkom. Strežnik preveri ujemanje prejetega žetona.
- SameSite atribut piškotkov: določa pravilo, po katerem se piškotki pošiljajo strežniku le pri zahtevah z iste domene, od koder so nastavljeni.
- Preverjanje glave Origin in Referer: strežnik preveri, od kod prihaja zahteva. Vendar te glave lahko spremenijo napadalci ali pa v nekaterih primerih niso prisotne.
- Zahteva po ponovni avtentikaciji za kritične ukrepe: zahteva vnos gesla pred izvajanjem pomembnih operacij.
Najbolj učinkovita in razširjena metoda je uporaba CSRF žetonov.
// Primer dodajanja CSRF žetona v obrazec
<form action="/transfer" method="POST">
<input type="hidden" name="_csrf_token" value="žeton, ki ga generira strežnik">
<input type="number" name="amount">
<button type="submit">Prenesi</button>
</form>
// Primer preverjanja CSRF žetona na strežniku (Node.js z Express)
app.post('/transfer', csrfProtection, (req, res) => {
// Obdelava zahteve po uspešnem preverjanju žetona
});