Sobes.tech
Junior

Kas yra CSRF?

sobes.tech AI

Atsakymas iš AI

CSRF (Cross-Site Request Forgery) — tai ataka, kai piktnaudžiaujama vartotojo patvirtinimu, kad jis atliktų nepageidaujamus veiksmus žiniatinklio svetainėje, kurioje jis jau yra autentifikuotas.

Atakos esmė ta, kad kenksminga svetainė arba laiškas siunčia užklausą, kurią naršyklė automatiškai išsiunčia į tikslinę svetainę. Jei vartotojas yra prisijungęs prie tikslinės svetainės, jo naršyklė išsiųs cookies ir užklausa bus įvykdyta jo teisėmis.

Pavyzdžiui, tai gali būti užklausa slaptažodžio keitimui, pinigų pervedimui ar paskyros ištrynimui.

Nuo CSRF apsaugai naudojami įvairūs metodai:

  • CSRF žetonai: Slaptos, unikalios kiekvienai užklausai žetonai, kurie generuojami serveryje ir siunčiami su kiekviena forma arba AJAX užklausa. Serveris tikrina gauto žetono atitiktį.
  • SameSite cookie atributas: Nustato taisyklę, pagal kurią cookie siunčiamos tik iš tos pačios domeno, iš kurio jos buvo nustatytos, užklausų.
  • Origin ir Referer antraščių tikrinimas: Serveris tikrina, iš kur atėjo užklausa. Tačiau šios antraštės gali būti pakeistos piktnaudžiautojo arba kai kuriais atvejais gali būti nebūti.
  • Reautentifikacijos reikalavimas kritinėms operacijoms: Užklausa įvesti slaptažodį prieš vykdant svarbias operacijas.

Efektyviausias ir plačiausiai naudojamas metodas yra CSRF žetonų naudojimas.

// Pavyzdys, kaip pridėti CSRF žetoną į formą
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="serveryje sugeneruotas žetonas">
  <input type="number" name="amount">
  <button type="submit">Perduoti</button>
</form>
// Pavyzdys, kaip patikrinti CSRF žetoną serveryje (Node.js su Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Užklausos apdorojimas po sėkmingo žetono patikrinimo
});