Login Register
HTTP cookie nima va qanday ishlaydi: sessiya, Secure hamda SameSite tushuntirildi

HTTP cookie nima va qanday ishlaydi: sessiya, Secure hamda SameSite tushuntirildi

HTTP cookie nima va qanday ishlashi: Set-Cookie, Cookie sarlavhasi, sessiya/doimiy turlar, Secure, HttpOnly va SameSite. Tekshirib sozlash bo‘yicha foydali yo‘riqnomalar.

HTTP cookie — veb-sahifa yoki ilovadan brauzerga yuboriladigan kichik ma’lumot bo‘lagi bo‘lib, u keyingi HTTP so‘rovlarida avtomatik tarzda birga yuboriladi. Bu sessiyani davom ettirish, foydalanuvchi holatini eslab qolish va personalizatsiya qilish kabi holatlarda ishlatiladi.

Cookie’ning asosiy maqsadi “server brauzerga biror holatni eslab qolishini aytadi, brauzer esa keyingi so‘rovda shu holat haqidagi ma’lumotni birga jo‘natadi” tamoyilini ta’minlashdir. Odatda cookie qiymati foydalanuvchi identifikatori yoki sessiya tokeni ko‘rinishida bo‘ladi, lekin u shart emas.

Cookie brauzer va server o‘rtasida HTTP sarlavhalari bilan almashinadi: server Set-Cookie orqali cookie o‘rnatadi, brauzer esa keyingi so‘rovda Cookie sarlavhasi ichida cookie’larni yuboradi.

Cookie’ning formatini ko‘rish uchun serverdan kelgan javobda Set-Cookie satrini, so‘rovda esa brauzerdan ketayotgan Cookie sarlavhasini tekshirish mumkin.

Cookie’lar ko‘pincha “sessiyaga bog‘liq” yoki “doimiy” bo‘lishiga qarab farqlanadi. Farq odatda cookie tarkibidagi Expires yoki Max-Age atributlari bilan belgilanadi.

Agar Expires yoki Max-Age ko‘rsatilmasa, cookie odatda brauzer yopilgunga qadar amal qiladi (sessiya cookie). Agar Max-Age yoki Expires berilsa, u ma’lum muddatdan keyin avtomatik yaroqsiz bo‘ladi (doimiy cookie).

Quyidagi misol doimiy cookie o‘rnatadi: server Set-Cookieda Max-Age=3600 bersa, cookie 3600 soniya (1 soat) amal qiladi. Sessiya cookie uchun bunday muddat atributi bo‘lmaydi.

Qaysi tur ekanini aniqlash uchun cookie’ning atributlari ichida Max-Age yoki Expires bor-yo‘qligi yetarli mezondir.

Cookie’lar hammasi ham har safar yuborilmaydi. Brauzer cookie’ni yuborish-qilmasligini bir nechta atribut orqali hal qiladi: Domain, Path, Secure, HttpOnly va SameSite.

Bu cheklovlar cookie qamrovini toraytiradi va ayrim xavfsizlik xavflarini kamaytirishga xizmat qiladi. Xususan, Secure cookie faqat HTTPS orqali uzatilishini, HttpOnly esa skriptlar cookie’ni o‘qimasligini ta’minlaydi.

Path va Domain qanday ishlaydi

Path atributi cookie qaysi URL yo‘li ostida yuborilishini bildiradi. Masalan, Path=/shop bo‘lsa, /shop bilan boshlanadigan sahifalarga so‘rov qilganda cookie yuboriladi.

Domain atributi esa qaysi xost nomlari cookie’ni qabul qilishi mumkinligini belgilaydi. Odatda cookie “o‘rnatilgan xost”ga bog‘liq bo‘ladi; Domain bilan yanada kengroq qamrov berilishi mumkin.

Secure, HttpOnly va SameSite

Secure: cookie faqat HTTPS orqali yuboriladi. Bu cookie’ni tarmoqda shifrlanmagan kanal orqali oqib ketish ehtimolini kamaytiradi.

HttpOnly: brauzer APIlari orqali ishlaydigan skriptlar cookie qiymatini o‘qolmaydi. Bu cookie’ni JavaScript orqali o‘g‘irlashga urinishlar xavfini pasaytiradi.

SameSite: “so‘rov qaysi kontekstdan kelgan”iga qarab cookie’ni cheklaydi. SameSite=Lax va SameSite=Strict holatlarida cross-sayt so‘rovlarida cookie yuborilish mexanizmi farq qiladi; maqsad — cross-sayt soxta so‘rovlar (masalan, ayrim CSRF ssenariylari) ta’sirini kamaytirish.

Cookie ishini “server cookie o‘rnatadi, brauzer keyingi so‘rovda olib boradi” deb soddalashtirib aytish mumkin, lekin real oqim bir nechta bosqichdan iborat bo‘ladi. Quyida odatiy sahifaga kirish va sessiya tiklash jarayonini mantiqan ketma-ket ko‘rsataman.

Har bir bosqichda qaysi sarlavha ishlashi va natija nima bo‘lishi aniq bo‘ladi.

1-bosqich: brauzer so‘rov yuboradi

Brauzer biror URL ga HTTP so‘rov qiladi. Agar o‘sha URL scope’iga mos cookie oldin o‘rnatilgan bo‘lsa, brauzer so‘rovda Cookie sarlavhasini qo‘shadi. Agar mos cookie bo‘lmasa, Cookie sarlavhasi bo‘lmasligi mumkin.

Bu yerda cookie’lar server uchun “avvalgi holat haqida eslatma” rolini o‘ynaydi.

Server foydalanuvchi sessiyasini boshlash yoki holatni saqlash uchun javob qaytaradi va javob sarlavhasida Set-Cookie ko‘rinishida cookie’ni yuboradi. Cookie qiymati odatda sessiya identifikatori yoki token bo‘ladi.

Server cookie’ni qanday scope’ bilan berishini (masalan, Path, Secure, SameSite) belgilaydi.

3-bosqich: brauzer cookie’ni saqlaydi

Brauzer Set-Cookie dagi ko‘rsatmalar asosida cookie’ni saqlaydi. Masalan, Max-Age yoki Expires bo‘lsa, brauzer yaroqlilik muddatini belgilab qo‘yadi; Domain va Path bo‘lsa, qaysi so‘rovlarga qo‘shilishini hisoblaydi.

Agar cookie formatida noto‘g‘ri atributlar bo‘lsa yoki cheklovlarga zid bo‘lsa, brauzer ularni rad etishi mumkin.

Keyingi safar foydalanuvchi cookie scope’iga mos URL ga kirganda, brauzer avtomatik ravishda Cookie sarlavhasini to‘ldirib yuboradi. Server cookie qiymatini o‘qib, sessiya davomiyligini tiklaydi yoki foydalanuvchi holatini aniqlaydi.

Shu tariqa HTTP “stateless” bo‘lsa ham, cookie orqali amaliy “holatli” tajriba yaratiladi.

HTTP dastlab “har bir so‘rov alohida” ishlashga mo‘ljallangan. 1990-yillar boshlarida veb-texnologiyalar tez ommalashgach, server tomonda sessiyani ushlab turish va foydalanuvchi holatini eslab qolish zarurati kuchaydi. Cookie g‘oyasi aynan shu ehtiyojdan kelib chiqqan.

Cookie’larni standartlashtirish bo‘yicha yo‘l bosqichma-bosqich bo‘lgan: dastlab brauzerlar va serverlar cookie mexanizmini norasmiy tarzda qo‘llagan, keyinroq uning umumiy qoidalari rasmiy hujjatlarda mustahkamlangan.

Cookie’ning standartlashuvi va muhim hujjatlar

HTTP cookie haqida asosiy spetsifikatsiyalar W3C va IETF yo‘nalishlarida ishlab chiqilgan va yangilanib kelgan. Amaliyotda cookie semantikasi odatda quyidagi hujjatlar orqali tushuntiriladi: RFC 6265 (2011-yil) — HTTP state’ni cookie orqali boshqarishning asosiy mexanizmlarini belgilaydi.

Keyinchalik xavfsizlik va cross-sayt oqimlar bilan bog‘liq ehtiyojlar sababli SameSite kabi tushunchalar keng qo‘llanila boshladi; cookie atributlari brauzerlarning himoya mexanizmlariga moslab takomillashdi.

Cookie’ning o‘ziga xos tomoni shundaki, u brauzer tomonidan so‘rov bilan avtomatik birga yuboriladi. Ba’zi muqobillarda bu xususiyat yo‘q yoki boshqacha nazorat qilinadi. Quyida eng ko‘p uchraydigan alternativalar bilan aniq farqni ko‘rsataman.

Yondashuv Asosiy usul So‘rov bilan avtomatik yuboriladimi? Qachon tanlanadi
Cookie Set-Cookie / Cookie Ha, scope va atributlar mos bo‘lsa Sessiyani server tomonda boshqarish, holatni HTTP oqimi bilan bog‘lash
Local storage Brouzer ichida saqlanadi Yo‘q (JS orqali qo‘lda yuboriladi) Faqat mijoz tomonda ishlaydigan holat, serverga token uzatishni aniq boshqarish
URL parametr (masalan, ?token=...) URL tarkibida uzatiladi Ha, URL so‘rov bilan boradi Cheklangan holatlar (odatda xavfsizlikka e’tibor kuchaytiriladi)

Amaliy qism: cookie’ni qanday sozlash va qanday tanlash kerak

Cookie’ni to‘g‘ri sozlash xavfsizlik va ishlash sifatiga bevosita ta’sir qiladi. Amaliy yondashuv: cookie nimani saqlashi (sessiya identifikatori yoki boshqa ma’lumot), qayerga yuborilishi (scope), va qaysi kontekstda yuborilmasligi (cross-sayt) kerakligini oldindan aniqlash.

Quyidagi tavsiyalarni tekshiruv ro‘yxati sifatida ishlating: ular brauzer xatti-harakatini oldindan bashorat qilishga yordam beradi.

Sozlash bo‘yicha tekshiruv ro‘yxati

  • Cookie qiymati sezgir bo‘lsa, Secure atributini faollashtiring va faqat HTTPS’da ishlang.
  • Cookie tarkibida sessiya tokeni bo‘lsa, HttpOnly ni yoqing (JavaScript orqali o‘qilmasin).
  • Qamrovni toraytirish uchun Path va (kerak bo‘lsa) Domain ni ehtiyot bilan belgilang.
  • Cross-sayt so‘rovlarida cookie yuborilishini cheklash uchun SameSite qiymatini aniq tanlang: sessiya xavfi bo‘lsa, konservativroq variantlar mos kelishi mumkin.
  • Sessiya cookie va doimiy cookie’ni farqlang: Max-Age yoki Expires qo‘llanishi foydalanuvchi tajribasiga va xavfsizlikka ta’sir qiladi.

Tipik xatolar va ularni aniqlash

Eng ko‘p uchraydigan muammo — cookie noto‘g‘ri scope bilan o‘rnatilib, kutilgan sahifalarda umuman yuborilmasligi. Bunday holatda server sessiyani topolmaydi va foydalanuvchi qayta kirishga majbur bo‘ladi.

Yana bir xato — Secure yoqilmagan bo‘lsa yoki SameSite noto‘g‘ri tanlansa, cross-sayt oqimlarida sessiya uzilib qolishi mumkin. Brauzer devtools’da “Network” bo‘limidan Set-Cookie va keyingi so‘rovlardagi Cookie sarlavhalarini solishtirib tekshiring.

FAQ

Cookie’ni o‘chirsam nima bo‘ladi?

Odatda cookie o‘chirilsa, brauzer serverga eski sessiya identifikatorini yubormaydi. Natijada server sessiyani topolmaydi va foydalanuvchi tizimga qayta kirishi yoki sahifadagi holatni qayta boshlab yuborishi mumkin.

Yo‘q. Cookie’ning Domain va Path atributlari bo‘yicha scope belgilanadi, shuningdek SameSite cross-sayt so‘rovlaridagi xatti-harakatni boshqaradi. Shu sababli bir sayt o‘rnatgan cookie boshqa sayt so‘rovlarida avtomatik yuborilmasligi mumkin.

Cookie’ni JavaScript bilan o‘qib bo‘ladimi?

Agar cookie HttpOnly bilan o‘rnatilgan bo‘lsa, JavaScript orqali uni o‘qib bo‘lmaydi. Bunday cookie’lar odatda faqat brauzer tomonidan HTTP so‘rov sarlavhalariga qo‘shiladi.

“Xavfsiz” degan javob umumiy bo‘lib qoladi. Cookie xavfsizligi uning atributlariga bog‘liq: Secure (HTTPS), HttpOnly (JavaScript’dan himoya), va SameSite (cross-sayt cheklovi) aynan himoya mexanizmlarining tayanch qismidir.

Har doim emas. Tokenni cookie’da saqlash “so‘rov bilan avtomatik yuborish” qulayligini beradi, lekin tokenning qiymati va atributlari (ayniqsa Secure, HttpOnly, SameSite) to‘g‘ri sozlanmasa xavf oshadi. Tanlov tizimning autentifikatsiya modeliga bog‘liq.

Xulosa

HTTP cookie — brauzer va server o‘rtasida “holat”ni HTTP stateless oqimi ustida saqlash uchun ishlatiladigan mexanizm. Server Set-Cookie bilan cookie o‘rnatadi, brauzer Cookie sarlavhasi orqali keyingi mos so‘rovlarga qo‘shib boradi.

Cookie’ning qanchalik foydali va xavfsiz bo‘lishi uning scope va atributlari (Secure, HttpOnly, SameSite, Path) qanday tanlanganiga bog‘liq. Shuning uchun amaliyotda faqat “cookie ishlatish” emas, balki uni aniq va tekshirib sozlash muhim.