Sobes.tech
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
});