SameSite — HTTP cookie atributi bo‘lib, brauzer cookie’ni cross-site so‘rovda yuborish yoki yubormaslikni boshqaradi. U asosan Cross-Site Request Forgery hujumining ta’sirini kamaytirish uchun yaratilgan. Atribut Strict, Lax yoki None qiymatini oladi. SameSite cookie maxfiyligini ta’minlamaydi va autentifikatsiya o‘rnini bosmaydi; u brauzerning so‘rov kontekstiga qarab credential yuborish siyosatidir.
Site tushunchasi
SameSite’dagi “site” oddiy origin bilan aynan bir xil emas. Site odatda scheme va registrable domain, ya’ni public suffixdan bir pog‘ona yuqori domen asosida aniqlanadi. app.example.uz va api.example.uz turli origin, lekin bir site bo‘lishi mumkin. Zamonaviy schemeful same-site hisobida http://example.uz va https://example.uz turli site sifatida qaraladi.
Shu farq subdomain kompromisini muhim qiladi. Zararli script boshqa origin sabab javobni o‘qiy olmasa ham, same-site kontekstda ayrim cookie so‘rovga qo‘shilishi mumkin. Yuqori xavfli ilova barcha subdomainlarni bir xil ishonchli deb qabul qilmaydi va CSRF himoyasini faqat SameSitega topshirmaydi.
Strict va Lax
SameSite=Strict cookie’ni cross-site navigatsiya va subresource so‘rovlarida yubormaydi. Foydalanuvchi tashqi saytdagi havoladan kirganda ham sessiya cookie’si dastlabki so‘rovda bo‘lmasligi mumkin. Bu kuchli cheklov, lekin login holati yo‘qdek ko‘rinadigan noqulay tajriba yaratishi mumkin.
SameSite=Lax cross-site image, iframe yoki POST kabi ko‘p holatda cookie’ni cheklaydi, lekin top-level safe navigatsiyada, odatda GET havolasida yuborishi mumkin. Shu sababli GET endpoint holatni o‘zgartirmasligi kerak. Brauzerlar atribut ko‘rsatilmagan cookie uchun Laxga yaqin standart xatti-harakat qo‘llashi mumkin, ammo aniq xavfsizlik siyosati atributni ochiq yozadi.
None qiymati
SameSite=None cookie’ni cross-site kontekstda ham yuborishga ruxsat beradi. Zamonaviy brauzerlar bu qiymat bilan Secure atributini talab qiladi, ya’ni cookie HTTPS orqali uzatiladi:
Set-Cookie: sid=...; Secure; HttpOnly; SameSite=None
Federativ login, uchinchi tomon iframe yoki alohida site’dagi frontend–API arxitekturasi None talab qilishi mumkin. Bunday cookie CSRF token, Origin/Referer tekshiruvi va aniq CORS siyosati bilan himoyalanadi. None “atribut yo‘q” degani emas; u literal qiymat sifatida yoziladi.
Cookie sozlamalari bilan birga
Secure cookie’ni faqat xavfsiz transportga, HttpOnly esa JavaScript orqali o‘qilmaslikka yo‘naltiradi. Path va Domain cookie qayerga yuborilishini belgilaydi. Host-only cookie’da Domain yozilmaydi va u subdomainlarga yuborilmaydi. __Host- prefiksli cookie Secure, Path=/ va Domain yo‘qligini talab qilib, subdomain orqali overwrite xavfini kamaytiradi.
SameSite XSSdan himoya qilmaydi. Ayni site’dagi zararli script foydalanuvchi nomidan so‘rov yuborishi mumkin, hatto HttpOnly cookie qiymatini o‘qimasa ham. Shuningdek, cookie’ga tayanmaydigan bearer token avtomatik yuborilmasa, SameSite unga tatbiq etilmaydi.
Oqimlarni sinash
Login redirect, payment provider callback va embedded widget kabi oqimlar real brauzerda tekshiriladi. POST orqali qaytadigan SAML javobi yoki OAuth state cookie’si noto‘g‘ri SameSite sabab yo‘qolishi mumkin. Maxsus qisqa yashovchi correlation cookie asosiy sessiya cookie’sidan boshqa siyosatga ega bo‘lishi mumkin. Brauzer developer vositalari cookie nima sabab bloklanganini ko‘rsatadi.
Eski brauzerlar va fallback
Ayrim eski clientlar SameSite=None qiymatini noto‘g‘ri talqin qilgan. Keng qurilma qo‘llovi talab etilgan tizim user-agentga bog‘liq compatibility strategiyasini sinashi yoki alohida cookie ishlatishi mumkin. Biroq xavfsizlik qarori faqat client sniffingga tayanmaydi. Browser yangilanishlari default siyosatni o‘zgartirishi mumkinligi sabab automated integration test top-level GET, cross-site POST, iframe va federativ redirect holatlarini qamrab oladi.
Bog‘liq tushunchalar
Cookie, CSRF, Same-origin policy, Secure attribute, HttpOnly, CORS, Session