🔑
Xavfsizlik

Session xavfsizligi — secure cookie, hijacking himoyasi va regeneration

08.07.2034
← Barcha maqolalar

Sessiya — bu foydalanuvchi va server o'rtasidagi davomli aloqa. Foydalanuvchi tizimga kirgandan keyin har bir so'rovda sessiya identifikatori (session ID) yuboriladi va server uni qaysi foydalanuvchi deb tan oladi. Agar hujumchi bu session ID'ni qo'lga kiritsa, u foydalanuvchining hisobiga to'liq kirib oladi — parolni bilmasdan ham. Shuning uchun session ID'ni himoya qilish nihoyatda muhim.

Secure cookie sozlamalari

PHP'da session ID odatda cookie orqali saqlanadi. Bu cookie'ning sozlamalari to'g'ri bo'lishi shart. session_set_cookie_params() funksiyasi orqali quyidagilar belgilanadi: secure=true (faqat HTTPS orqali yuborilsin), httponly=true (JavaScript'dan o'qish mumkin emas), samesite='Lax' yoki 'Strict' (CSRF himoyasi), path='/' (butun saytda ishlasin), domain=null (faqat shu domen). Bu sozlamalarni session_start()'dan oldin qilish kerak.

Session hijacking — sessiya o'g'irlash

Session hijacking — bu hujumchining foydalanuvchining session ID'ni qo'lga kiritishi. Bu bir necha usul bilan amalga oshadi: XSS orqali (agar cookie HttpOnly bo'lmasa), tarmoq sniffing (agar HTTPS bo'lmasa), URL'da session ID yuborish, public WiFi'da man-in-the-middle. Himoya: HTTPS majburiy, HttpOnly cookie, URL'da session ID yuborilmasligi (php.ini'da session.use_only_cookies=1), va IP/User-Agent tekshiruvi.

Session regeneration — ID yangilash

Foydalanuvchi tizimga kirgan paytda yoki muhim amal qilganda session ID ni yangilash kerak. Bu session_regenerate_id(true) orqali amalga oshiriladi. true parametri eski sessiyani o'chiradi. Bu nima uchun kerak? Session fixation hujumida hujumchi avval o'zi session ID yaratadi va foydalanuvchini shu ID bilan tizimga kirishga majbur qiladi. Keyin u o'sha ID orqali foydalanuvchi nomidan ishlay oladi. Regeneration bunga to'sqinlik qiladi.

Session timeout — vaqt cheklash

Sessiya cheksiz uzoq davom etmasligi kerak. Ikki xil timeout bor: absolute timeout (umuman qancha vaqt) va idle timeout (qanchalik harakatsizlik). Bank ilovalarida idle timeout odatda 5-15 daqiqa, absolute timeout 1-2 soat. Oddiy saytlarda idle 30 daqiqa, absolute 24 soat bo'lishi mumkin. Timeout'ni amalga oshirish uchun sessiyada last_activity vaqti saqlanadi va har so'rovda tekshiriladi.

IP va User-Agent tekshiruvi

Qo'shimcha himoya sifatida sessiyada foydalanuvchining IP manzili va User-Agent string saqlanishi mumkin. Har so'rovda ular tekshiriladi — agar o'zgargan bo'lsa, sessiya tugatiladi. Lekin diqqat: IP manzil mobil tarmoqda tez o'zgarishi mumkin (foydalanuvchi WiFi'dan mobile internet'ga o'tsa). Shuning uchun IP'ning faqat birinchi 3 bloki yoki AS raqami solishtirilishi mumkin. User-Agent esa odatda barqaror.

Logout — sessiya tugatish

Foydalanuvchi tizimdan chiqqanda sessiya to'liq tugatilishi kerak. Bu uchta qadamdan iborat: 1) $_SESSION ni bo'shatish, 2) session_destroy() chaqirish, 3) cookie'ni o'chirish (setcookie(session_name(), '', time()-3600)). Faqat bittasini qilish yetarli emas — uchalasi ham kerak.

Sayt.uz amaliyot

Sayt.uz platformasida sessiya cookie'lari avtomatik Secure va HttpOnly bayroqlari bilan o'rnatiladi. SameSite=Lax sozlamasi CSRF himoyasi beradi. Tizimga kirganda session_regenerate_id majburiy bajariladi. Idle timeout 30 daqiqa, absolute timeout 24 soat. Saytingizni Sayt.uz hostingda joylashtirib, sessiyalar HTTPS orqali xavfsiz uzatiladi. Bepul SSL sertifikat ham mavjud.

O'xshash maqolalar

🔐 Parol menejerlar — Bitwarden, 1Password, LastPass va KeePass tanlovi 🍯 Honeypot — formada yashirin maydon, botlarni ushlaydi va spamni to'xtatadi 📄 /.well-known/security.txt — xavfsizlik bo'yicha bog'lanish standart 📋 GDPR moslik — Yevropa ma'lumotlarini himoya qilish majburiyatlari
🌐 Til
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English