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.
Cookie bilan bog‘liqligi
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 token — server 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.
SameSite cookie
SameSite — cookie boshqa saytlar orqali yuborilishiga cheklov qo‘yadigan cookie atributi. Bu CSRF xavfini kamaytirishda muhim rol o‘ynaydi.
SameSite qiymatlari:
Strict— cookie faqat shu sayt ichida yuboriladi;Lax— ayrim xavfsiz navigatsiyalarda yuborilishi mumkin;None— cross-site requestlarda ham yuboriladi, odatdaSecurebilan 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;
- CORS — browser 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,DELETEmetodlardan foydalanish; Originheaderini tekshirish;Refererheaderini tekshirish;- muhim amallar oldidan qayta authentication so‘rash;
- cookie’ni
HttpOnly,Secure,SameSiteatributlari 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:
- cookie-based login;
- API requestlar;
- CSRF tokenni header orqali yuborish;
- SameSite cookie;
- CORS sozlamalari;
- authentication modeli.
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:
- session cookie ishlatilsa;
- browser cookie’ni avtomatik yuborsa;
- muhim requestlarda CSRF token bo‘lmasa;
- SameSite noto‘g‘ri sozlangan bo‘lsa;
- CORS va cookie sozlamalari noto‘g‘ri bo‘lsa.
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