Sobes.tech
Junior

Kas ir CSRF?

sobes.tech AI

Atbilde no AI

CSRF (Cross-Site Request Forgery) — tas ir uzbrukuma veids, kad ļaunprātīgs lietotājs piespiež lietotāju veikt nevēlamas darbības tīmekļa vietnē, kurā lietotājs jau ir autentificēts.

Uzbrukuma būtība ir tāda, ka ļaunprātīga vietne vai vēstule satur pieprasījumu, ko lietotāja pārlūkprogramma automātiski nosūta mērķa vietnei. Ja lietotājs ir pieteicies mērķa vietnē, viņa pārlūkprogramma nosūtīs sīkdatnes, un pieprasījums tiks izpildīts ar viņa tiesībām.

Piemēram, tas var būt pieprasījums paroles maiņai, naudas pārskaitījumam vai konta dzēšanai.

No CSRF aizsardzības tiek izmantotas dažādas metodes:

  • CSRF žetoni: Slepenas, unikālas katram pieprasījumam, kas ģenerētas serverī un nosūtītas ar katru formu vai AJAX pieprasījumu. Serveris pārbauda saņemto žetonu atbilstību.
  • SameSite sīkdatņu atribūts: Nosaka noteikumu, sūtot sīkdatnes tikai no tā paša domēna, no kura tās tika iestatītas.
  • Origin un Referer galvenes pārbaude: Serveris pārbauda, no kurienes nāk pieprasījums. Tomēr šīs galvenes var tikt mainītas ļaunprātīga lietotāja vai dažos gadījumos tās var nebūt.
  • Nepieciešamība pēc atkārtotas autentifikācijas kritiskām darbībām: Pieprasījums ievadīt paroli pirms svarīgu operāciju veikšanas.

Visefektīvākā un plaši izplatītākā metode ir CSRF žetonu izmantošana.

// Piemērs, kā pievienot CSRF žetonu formai
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="servera ģenerēts žetons">
  <input type="number" name="amount">
  <button type="submit">Pārskaitīt</button>
</form>
// Piemērs, kā pārbaudīt CSRF žetonu serverī (Node.js ar Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Pieprasījuma apstrāde pēc žetona veiksmīgas pārbaudes
});