Bosh sahifa Wiki CSRF

CSRF

CSRF — Cross-Site Request Forgery, ya’ni foydalanuvchi nomidan uning roziligisiz so‘rov yuborishga qaratilgan web xavfsizlik zaifligi. CSRF hujumida foydalanuvchi tizimga login qilgan holatda bo‘ladi, hujumchi esa brauzer orqali shu foydalanuvchi nomidan zararli amal bajarishga urinadi.

CSRF asosan cookie orqali ishlaydigan authentication tizimlarida uchraydi. Chunki browser biror saytga tegishli cookielarni avtomatik yuboradi.

Vazifasi

CSRF tushunchasi web ilovalardagi xavfsizlik zaifligini ifodalaydi. Bu zaiflik foydalanuvchi sessiyasidan foydalanib, ruxsatsiz amal bajarishga olib kelishi mumkin.

CSRF orqali quyidagi amallar xavf ostida qolishi mumkin:

  • profil ma’lumotlarini o‘zgartirish;
  • email yoki telefon raqamini almashtirish;
  • parolni o‘zgartirish;
  • to‘lov yoki pul o‘tkazish;
  • admin panelda sozlama o‘zgartirish;
  • post, komment yoki ma’lumot o‘chirish;
  • foydalanuvchi nomidan forma yuborish.

Masalan, foydalanuvchi UzbekDevs saytiga login qilgan bo‘lsa, boshqa zararli sahifa uning brauzeri orqali UzbekDevs’ga so‘rov yuborishga urinishi mumkin.

CSRF qanday ishlaydi?

CSRF brauzerning cookie yuborish mexanizmidan foydalanadi. Foydalanuvchi biror web ilovaga login qilganda, browserda session cookie saqlanadi. Keyin boshqa saytga kirilganda, u sayt foydalanuvchi brauzeridan login qilingan web ilovaga so‘rov yuborishi mumkin.

Oddiy jarayon:

  • foydalanuvchi web ilovaga login qiladi;
  • browserda session cookie saqlanadi;
  • foydalanuvchi zararli sahifaga kiradi;
  • zararli sahifa boshqa saytga request yuboradi;
  • browser cookie’ni avtomatik qo‘shib yuboradi;
  • server so‘rovni login qilingan foydalanuvchidan kelgan deb qabul qilishi mumkin.

Agar server qo‘shimcha CSRF himoyasiga ega bo‘lmasa, zararli amal bajarilishi mumkin.

CSRF ko‘pincha cookie-based authentication bilan bog‘liq. Browser cookie’larni avtomatik yuborgani uchun, request foydalanuvchi nomidan kelgandek ko‘rinadi.

Cookie orqali ishlaydigan tizimlarda:

  • session cookie browserda saqlanadi;
  • request yuborilganda cookie avtomatik qo‘shiladi;
  • server cookie orqali foydalanuvchini aniqlaydi;
  • request qayerdan kelgani alohida tekshirilmasa, CSRF xavfi paydo bo‘ladi.

CSRF aynan authentication ma’lumotlari avtomatik yuboriladigan holatlarda muhim xavf hisoblanadi.

CSRF token

CSRF tokenserver tomonidan yaratiladigan maxsus tasodifiy qiymat. U forma yoki request ichida yuboriladi va server tomonidan tekshiriladi.

CSRF token quyidagicha ishlaydi:

  • server foydalanuvchi sessioni uchun token yaratadi;
  • token HTML forma yoki frontend request ichiga joylanadi;
  • foydalanuvchi forma yuborganda token ham yuboriladi;
  • server kelgan tokenni sessiondagi token bilan solishtiradi;
  • token mos bo‘lsa, request qabul qilinadi;
  • token yo‘q yoki noto‘g‘ri bo‘lsa, request rad etiladi.

Zararli sayt odatda foydalanuvchi sessionidagi CSRF tokenni o‘qiy olmaydi.

SameSitecookie boshqa saytlar orqali yuborilishiga cheklov qo‘yadigan cookie atributi. Bu CSRF xavfini kamaytirishda muhim rol o‘ynaydi.

SameSite qiymatlari:

  • Strictcookie faqat shu sayt ichida yuboriladi;
  • Lax — ayrim xavfsiz navigatsiyalarda yuborilishi mumkin;
  • None — cross-site requestlarda ham yuboriladi, odatda Secure bilan ishlatiladi.

SameSite cookie browser darajasida CSRF xavfini kamaytirishga yordam beradi.

Origin va Referer tekshiruvi

Server request qaysi manbadan kelganini Origin yoki Referer headerlari orqali tekshirishi mumkin.

Bu tekshiruvda:

  • request yuborilgan domain aniqlanadi;
  • ruxsat etilgan domainlar bilan solishtiriladi;
  • begona domainlardan kelgan muhim requestlar rad qilinadi;
  • forma va API so‘rovlari nazorat qilinadi.

Origin va Referer tekshiruvi CSRF token bilan birga ishlatilishi mumkin.

Safe va unsafe metodlar

HTTP metodlar CSRF xavfida muhim ahamiyatga ega. Ma’lumotni o‘zgartirmaydigan requestlar va ma’lumotni o‘zgartiradigan requestlar ajratiladi.

Odatda:

  • GET — ma’lumot olish uchun;
  • POST — ma’lumot yaratish yoki yuborish uchun;
  • PUT — ma’lumotni to‘liq yangilash uchun;
  • PATCH — ma’lumotni qisman yangilash uchun;
  • DELETE — ma’lumotni o‘chirish uchun.

Muhim o‘zgarishlar GET request orqali bajarilsa, CSRF xavfi ortadi. Chunki GET so‘rovlarini rasm, link yoki script orqali yuborish osonroq.

CSRF va XSS farqi

CSRF va XSS web xavfsizlikdagi ikki xil zaiflikdir.

Farqlar:

  • CSRF foydalanuvchi nomidan ruxsatsiz request yuborishga qaratiladi;
  • XSS sahifaga zararli JavaScript kiritishga qaratiladi;
  • CSRF cookie va sessiondan foydalanadi;
  • XSS browser ichida script bajarilishiga olib keladi;
  • CSRF’da hujumchi odatda response’ni o‘qiy olmaydi;
  • XSS’da hujumchi sahifadagi ma’lumotlarni o‘qishi yoki o‘zgartirishi mumkin.

XSS mavjud bo‘lsa, CSRF token kabi himoyalar ham zaiflashishi mumkin, chunki script sahifa ichidagi tokenni o‘qishi mumkin.

CSRF va CORS farqi

CSRF va CORS bir-biriga yaqin ko‘rinishi mumkin, lekin ular boshqa-boshqa tushunchalar.

  • CSRF — foydalanuvchi nomidan ruxsatsiz request yuborish zaifligi;
  • CORSbrowser boshqa originlardan resurs o‘qishini boshqaradigan mexanizm;
  • CORS response o‘qilishini nazorat qiladi;
  • CSRF request yuborilishidan foydalanadi;
  • CORS noto‘g‘ri sozlansa, ma’lumot o‘qish xavfi paydo bo‘lishi mumkin;
  • CSRF’da response o‘qilmasa ham, amal bajarilishi mumkin.

Shuning uchun CORS sozlamasi CSRF himoyasining to‘liq o‘rnini bosmaydi.

CSRF himoya usullari

CSRF’ga qarshi bir nechta himoya usullari ishlatiladi.

Keng tarqalgan usullar:

  • CSRF token ishlatish;
  • SameSite cookie sozlash;
  • muhim amallar uchun POST, PUT, PATCH, DELETE metodlardan foydalanish;
  • Origin headerini tekshirish;
  • Referer headerini tekshirish;
  • muhim amallar oldidan qayta authentication so‘rash;
  • cookie’ni HttpOnly, Secure, SameSite atributlari bilan sozlash;
  • state-changing requestlarda token talab qilish.

Amaliy tizimlarda bu usullar birgalikda ishlatiladi.

CSRF va SPA

SPA — Single Page Application. SPA’da frontend API bilan JavaScript orqali ishlaydi. Agar authentication cookie orqali bo‘lsa, CSRF xavfi saqlanib qoladi.

SPA tizimlarida CSRF quyidagilar bilan bog‘liq:

Agar token Authorization header orqali yuborilsa va browser uni avtomatik qo‘shmasa, CSRF xavfi boshqacha baholanadi.

CSRF va API

API tizimlarida CSRF authentication modeliga bog‘liq. Agar API cookie orqali foydalanuvchini aniqlasa, CSRF xavfi bo‘lishi mumkin.

API’da CSRF xavfi quyidagi holatlarda uchraydi:

Agar API faqat Authorization: Bearer <token> header orqali ishlasa va token avtomatik yuborilmasa, CSRF xavfi kamayadi.

Dasturlashdagi o‘rni

CSRF web ilovalar xavfsizligida muhim tushunchalardan biridir. U foydalanuvchi login holatidan foydalanib, uning nomidan ruxsatsiz request yuborilishiga olib kelishi mumkin.

CSRF quyidagi tizimlarda e’tiborga olinadi:

  • login va session tizimlari;
  • admin panellar;
  • internet do‘konlar;
  • banking ilovalari;
  • CMS tizimlari;
  • forum va community saytlar;
  • cookie-based API’lar;
  • payment sozlamalari;
  • foydalanuvchi profil sahifalari.

CSRF himoyasi server, cookie, frontend forma va API requestlar darajasida tashkil qilinadi.

Bog‘liq tushunchalar

Web security, Cookie, Session, CSRF token, SameSite, Origin, Referer, XSS, CORS, HTTP, Authentication, Security