Cookie'lar internetning eng asosiy texnologiyalaridan biri. Sessiya, foydalanuvchi sozlamalari, kalit qiymatlar — barchasi cookie'larda saqlanadi. Lekin har bir cookie to'g'ri sozlanmasa, bu xavfsizlik teshigi bo'lishi mumkin. Zamonaviy brauzerlar va veb-standartlar cookie'lar uchun bir nechta himoya mexanizmlarini taklif qiladi. Ushbu maqolada ularning hammasini ko'rib chiqamiz.
HttpOnly bayrog'i — JavaScript'dan himoya
HttpOnly cookie'si JavaScript orqali o'qib bo'lmaydi. Bu nima uchun muhim? Agar sizning saytingizda XSS zaiflik bo'lsa, hujumchi document.cookie orqali sessiya cookie'sini o'qib oladi va foydalanuvchi sessiyasini o'g'irlaydi. HttpOnly bayrog'i o'rnatilgan bo'lsa, hatto XSS bo'lsa ham, JavaScript bu cookie'ga kira olmaydi. PHP'da bu setcookie('name', 'value', ['httponly' => true]) yoki session.cookie_httponly=1 sozlamasi orqali yoqiladi. Har bir sessiya va autentifikatsiya cookie'sida HttpOnly majburiy.
Secure bayrog'i — HTTPS majburiyligi
Secure bayrog'i o'rnatilgan cookie faqat HTTPS orqali yuboriladi. HTTP orqali so'rov bo'lsa, brauzer bu cookie'ni qo'shmaydi. Bu nima uchun kerak? Agar foydalanuvchi public WiFi'da bo'lsa va hujumchi tarmoqni tinglayotgan bo'lsa, HTTP orqali yuborilgan cookie ochiq matn bo'lib ko'rinadi. Secure bayrog'i bunga to'sqinlik qiladi. Hozirgi paytda barcha cookie'lar Secure bo'lishi kerak — chunki HTTPS endi standart.
SameSite=Strict — eng kuchli himoya
SameSite=Strict cookie faqat shu saytdan kelgan so'rovlarda yuboriladi. Boshqa saytdan link bosilganda ham cookie qo'shilmaydi. Bu CSRF hujumlaridan eng kuchli himoya. Lekin foydalanuvchi tajribasiga ta'sir qiladi: agar foydalanuvchi email'dagi linkni bosib saytga kirsa, u tizimga kirgan bo'lsa ham, login holatida ko'rinadi. Bank ilovalari va kritik tizimlar uchun mos.
SameSite=Lax — muvozanatli yondashuv
SameSite=Lax — bu Strict va eskicha xulq o'rtasidagi muvozanat. Cookie ko'pchilik holatda yuboriladi, lekin POST forma yuborishda yoki iframe ichida emas. Bu CSRF hujumlarining katta qismidan himoya qiladi, lekin foydalanuvchi tajribasini buzmaydi. Hozirgi zamonaviy brauzerlarda SameSite=Lax standart sifatida ishlatiladi. Ko'pchilik veb-sayt uchun mos.
SameSite=None — alohida ehtiyot kerak
SameSite=None cookie har qanday cross-site so'rovda yuboriladi. Bu eski xulq. Agar SameSite=None ishlatilsa, Secure bayrog'i ham majburiy — brauzerlar buni talab qiladi. Bu sozlama faqat tashqi servislar (analytics, ad networks, payment widgets) uchun zarur bo'lganda ishlatiladi. Oddiy sessiya cookie'lari uchun ishlatish xato.
Path va Domain — qamrov
Path sozlamasi cookie qaysi yo'llarda yuborilishini belgilaydi. Misol uchun, path='/admin' o'rnatilgan cookie faqat /admin/* sahifalarda yuboriladi. Bu admin cookie'sini saytning boshqa qismlaridan ajratish uchun foydali. Domain sozlamasi esa qaysi domenlarga cookie yuborilishini belgilaydi. Misol uchun, domain='.sayt.uz' barcha subdomain'larga cookie yuboradi. Lekin bu xavf — agar bitta subdomain xavfsizmas bo'lsa, butun cookie xavf ostida. Imkon qadar domen sozlamasini cheklash kerak.
Cookie hajmi va sonining cheklovi
Brauzerlarda cookie'lar uchun cheklovlar bor: bitta cookie maksimum 4 KB, bitta domen uchun 50 ta cookie. Cookie'larga ko'p ma'lumot saqlamaslik kerak — bu serverga har so'rovda yuboriladi va tezlikni pasaytiradi. Katta ma'lumotlarni serverda sessiyada saqlang.
Sayt.uz amaliyot
Sayt.uz platformasida barcha cookie'lar Secure, HttpOnly va SameSite=Lax bayroqlari bilan o'rnatiladi. Admin va kabinet cookie'lari uchun alohida Path sozlamasi qo'llaniladi. Sessiya cookie'lari muhim amallar (login, parol o'zgartirish) paytida regenerate qilinadi. Saytingizni Sayt.uz hostingda joylashtirsangiz, bepul SSL sertifikat orqali Secure cookie'lar to'liq qo'llaniladi. Domen ro'yxati ham bir joydan amalga oshiriladi.