Tətbiq inkişafında Session Token — bu nədir, işləmə prinsipi və JWT-dən fərqləri

Müəllif: IT Sectr Dərc olunub: 2026-04-05 Oxuma vaxtı: 9 dəq

Session Token — bu, serverin istifadəçinin uğurla autentifikasiyasından sonra yaratdığı və sonrakı sorğuları identifikasiya etmək üçün istifadə etdiyi unikal identifikatordur. Özünə kifayət edən tokenlərdən (JWT) fərqli olaraq, session token özlüyündə məlumat daşımayan təsadüfi sətirdir: sessiya haqqında bütün məlumat serverdə operativ yaddaşda və ya verilənlər bazasında saxlanılır. OAuth.com, 2025 məlumatlarına görə, session token server veb-tətbiqləri və hibrid mobil arxitekturalarda ən geniş yayılmış autentifikasiya mexanizmi olaraq qalır.

Başlıca

  • Session Token — server sessiya məlumatlarına istinad edən təsadüfi identifikator
  • Stateful — server sessiya vəziyyətini Redis, Memcached və ya verilənlər bazasında saxlayır
  • Sadə ləğv — serverdə sessiya qeydini silmək kifayətdir və token etibarsız olur
  • Təhlükəsizlik — məlumatlar tokendə saxlanılmır, bu da onların dekodlaşdırma yolu ilə sızmasını istisna edir
  • Cookie — HttpOnly, Secure və SameSite bayraqları ilə veb-tətbiqlərdə session token ötürülməsinin ənənəvi üsulu

Session Token nədir?

Session Token (sessiya identifikatoru) — bu, serverin istifadəçinin autentifikasiyasından sonra yaratdığı və sessiya məlumatları ilə əlaqələndirdiyi unikal sətirdir. Token istifadəçi haqqında heç bir məlumat daşımır — bu, sadəcə serverdə saxlanılan məlumatların açarıdır. Belə yanaşma stateful autentifikasiyası adlanır: server hər aktiv sessiyanın vəziyyətini saxlayır və hər sorğuda onu yoxlayır.

Sessiya məlumatlarına daxildir: istifadəçi identifikatoru, giriş vaxtı, IP ünvanı, user-agent, icazələr siyahısı (permissions), son aktivlik vaxtı. Müştəri session token ilə sorğu göndərdikdə, server sessiya anbarında müvafiq qeydi tapır, onun etibarlılığını yoxlayır və sorğun işlənməsi üçün məlumatları çıxarır. Sessiya qeydi yoxdursa və ya müddəti keçibsə, server autentifikasiya xətası qaytarır və yenidən daxil olmağı tələb edir.

OWASP, 2025 məlumatlarına görə, session token dərhal girişi ləğv etmək tələb olunan tətbiqlər üçün standart olaraq qalır — məsələn, bank sistemləri və korporativ portallarda, administrator istifadəçinin sessiyasını dərhal sonlandıra bilməlidir. Belə sistemlərdə session token əlavə bloklama mexanizmləri olmadan stateless tokenlər üçün mümkün olmayan tam giriş nəzarətini təmin edir.

Session Token necə işləyir

İşləmə prosesi müştərinin autentifikasiya serverinə giriş məlumatlarını göndərməsi ilə başlayır. Server login və şifrəni yoxlayır, anbarda (adətən Redis və ya verilənlər bazasında) sessiya qeydi yaradır və müştəriyə unikal session token qaytarır. Müştəri tokeni saxlayır və hər növbəti sorğu ilə birlikdə göndərir, server isə hər dəfə sessiyanın mövcudluğunu və etibarlılığını yoxlayır.

Server sessiyası və anbar

Redis — yaddaş daxili saxlanma və TTL (time-to-live) dəstəyi sayəsində ən məşhur sessiya anbarıdır. Hər sessiya açar-dəyər cütlüyü kimi saxlanılır, burada açar session token, dəyər isə sessiya məlumatları olan JSON obyektidir. TTL müddəti keçmiş sessiyaları avtomatik silir. Alternativlər: Memcached (yalnız yaddaş, disksiz), PostgreSQL/MySQL (davamlılıq, lakin yavaş) və DynamoDB (AWS infrastrukturu üçün).

Redis-də sessiya quruluşu nümunəsi: session:{token}{“userId”: 42, “role”: “admin”, “createdAt”: 1812345678, “lastAccess”: 1812345678}. Server hər sorğuda lastAccess-i yeniləyir ki, bu da hərəkətsizlik vaxtı limitini tətbiq etməyə imkan verir — hərəkətsizlik dövründən sonra sessiyanın avtomatik bağlanması.

Cookie vs Header

Session Token iki üsulla ötürülə bilər: HTTP cookie vasitəsilə və ya HTTP Authorization başlığı ilə. Cookie — veb-tətbiqlər üçün ənənəvi üsul: server HttpOnly (JavaScript üçün əlçatmaz), Secure (yalnız HTTPS) və SameSite (CSRF-dən qorunma) bayraqları ilə cookie təyin edir. Mobil tətbiqlər üçün daha çox Authorization: Bearer <session_token> başlığı istifadə olunur, çünki cookie mexanizmi native kliyentlərdə həmişə rahat deyil.

Session Token həyat dövrü

Həyat dövrü session token üç mərhələdən ibarətdir: yaradılma, aktiv sessiyanın saxlanması və başa çatma. Hər mərhələ tokenin sızmasını və ya ələ keçirilməsinin qarşısını almaq üçün düzgün təhlükəsizlik konfiqurasiyası tələb edir.

Yaradılma, saxlanma və silinmə

Yaradılma — server 128–256 bit uzunluğunda kriptoqrafik təsadüfi sətir yaradır (məsələn, Java-da SecureRandom və ya Python-da os.urandom vasitəsilə). Token proqnozlaşdırıla bilməz olmalıdır — entropiyasız UUID və ya vaxt damğası istifadəsi yolverilməzdir. Saxlanma kliyentdə: iOS-da — Keychain, Android-də — EncryptedSharedPreferences, vebdə — HttpOnly cookie. Silinmə çıxış zamanı baş verir: kliyent tokeni anbardan silir, server Redis-dən sessiya qeydini silir. Çıxışdan sonra session token yararsız olur — server müvafiq qeydi tapmayacaq.

SANS Institute, 2025 məlumatlarına görə, sessiyanın düzgün başa çatdırılması (serverdə təmizləmə ilə çıxış) oğurlanmış tokenlərdən istifadə edən hücumların 70%-ə qədərinin qarşısını alır. Təkcə kliyentdə tokeni silmək deyil, həm də serverdə sessiyanı ləğv etmək kritik əhəmiyyət daşıyır.

Session Token vs JWT

Session Token və JWT autentifikasiyaya iki fərqli yanaşmanı təmsil edir. Session Token — stateful (server vəziyyəti saxlayır), JWT — stateless (məlumatlar token daxilində). Onlar arasında seçim tətbiqin arxitekturasından və təhlükəsizlik tələblərindən asılıdır.

MeyarSession TokenJWT
ModelStateful (məlumatlar serverdə)Stateless (məlumatlar tokendə)
LəğvDərhal — sessiyanı Redis-dən silQara siyahı və ya qısa TTL tələb edir
Ölçü16–64 bayt500–2000 bayt
Məlumatların saxlanmasıYalnız serverdə (təhlükəsiz)Token daxilində (base64, şifrələnməmiş)
MiqyaslamaOrtaq anbar tələb edir (Redis)Tələb etmir — token lokal yoxlanılır
CSRF qorunmasıSameSite cookie + CSRF token tələb edirTələb olunmur (token başlıqda)

Session Token nə vaxt seçilməli

Session Token aşağıdakı hallarda üstünlük təşkil edir: sessiyaların dərhal ləğvi tələb olunduqda (bankınq, idarəetmə panelləri), tətbiq ortaq Redis ilə bir və ya bir neçə serverdə işləyirsə, sessiya məlumatları böyükdür və JWT-yə sığmırsa, və ya komanda tokenin dekolajı ilə məlumat sızması riskini minimuma endirmək istəyirsə. Belə ssenarilərdə session token şübhəli aktivlik zamanı dərhal giriş blokadasını təmin edir — Redis-dən bir qeydi silmək kifayətdir və istifadəçinin bütün sessiyaları etibarsız olur.

Redis, 2025 məlumatlarına görə, sessiya açarları səviyyəsində TTL (EXPIRE əmri) istifadəsi fon tapşırıqlarına əlavə xərc çəkmədən müddəti keçmiş sessiyaları avtomatik təmizləyir. TTL 1 saat və 10 000 eyni vaxtlı istifadəçi yükü olan sessiyalar üçün Redis sessiya ölçüsü 1 KB olduqda təxminən 1 GB RAM istehlak edir ki, bu da onu əksər tətbiqlər üçün iqtisadi cəhətdən səmərəli edir.

Session Token təhlükəsizliyi

Təhlükəsizlik session token iki prinsipə əsaslanır: token proqnozlaşdırıla bilməz və ötürülmə və saxlanma zamanı qorunmalıdır. Əsas təhdidlər — tokenin ələ keçirilməsi (man-in-the-middle, XSS), onun proqnozlaşdırılması (zəif generasiya) və sessiya fiksasiyası (session fixation).

Token oğurluğundan qorunma

Qorunma daxildir: token ilə bütün sorğularda HTTPS istifadəsi, qısa sessiya TTL-nin təyin edilməsi (15–60 dəqiqə hərəkətsizlik), sessiyanın IP və user-agent ilə əlaqələndirilməsi (hər sorğuda əlavə yoxlama), cookie üçün Secure və HttpOnly bayraqlarının istifadəsi, həssas əməliyyatlardan sonra session tokenin mütəzəmil rotasiyası (şifrənin dəyişdirilməsi, səlahiyyətlərin artırılması). OWASP həmçinin girişdən sonra yeni sessiya yaradılarkən köhnə sessiyanın ləğvi ilə Sessiya idarəetməsi tətbiqini tövsiyə edir — bu sessiya fiksasiyasının qarşısını alır.

OWASP ASVS, 2025 məlumatlarına görə, sessiya ən azı iki faktora bağlanmalıdır: token özü (kliyentdə olan) və IP/user-agent (serverə məlum olan). Bu amillər uyğun gəlmədikdə, server sessiyanı başa çatdırmalı və yenidən autentifikasiya tələb etməlidir.

Kotlin-də tətbiq nümunəsi

Aşağıda Spring Boot və Redis istifadə edərək Kotlin-də session tokenin server tətbiqi nümunəsi verilmişdir. Server SecureRandom vasitəsilə kriptoqrafik təhlükəsiz token yaradır, sessiyanı TTL ilə Redis-də saxlayır və hər sorğuda onu yoxlayır. Kod üç əsas əməliyyatı nümayiş etdirir: sessiyanın yaradılması, yoxlanması və ləğvi.

kotlin
data class Session(
    val userId: Long,
    val role: String,
    val createdAt: Long,
    val lastAccess: Long
)

object SessionManager {
    private val redis = JedisPool("localhost", 6379)

    fun createSession(userId: Long, role: String): String {
        val token = generateSecureToken()
        val session = Session(userId, role, now(), now())
        redis.resource.use { conn ->
            conn.setex("session:$token", 3600, toJson(session))
        }
        return token
    }

    fun validateSession(token: String): Session? {
        redis.resource.use { conn ->
            val json = conn.get("session:$token") ?: return null
            return fromJson(json)
        }
    }

    fun invalidateSession(token: String) {
        redis.resource.use { it.del("session:$token") }
    }

    private fun generateSecureToken(): String {
        val bytes = ByteArray(32)
        SecureRandom().nextBytes(bytes)
        return Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)
    }
}

Bu tətbiq Redis-ə thread-təhlükəsiz qoşulma üçün JedisPool istifadə edir. createSession metodu 1 saat (3600 saniyə) TTL təyin edir — bu müddətdən sonra Redis avtomatik olaraq qeydi siləcək. validateSession metodu mövcud olmayan və ya müddəti keçmiş sessiyalar üçün null qaytarır ki, bu da serverə etibarsız token ilə sorğu düzgün emal etməyə və HTTP 401 qaytarmağa imkan verir.

Tez-tez verilən suallar

Session token access token-dən nə ilə fərqlənir?

Session token — server sessiyasının identifikatorudur (stateful). Access token — API-yə giriş üçün etimadnamədir (JWT və ya ola bilər). Session token adətən veb-sessiyalar üçün, access token isə mobil və SPA tətbiqlərində API sorğuları üçün istifadə olunur. Onlar birgə mövcud ola bilərlər: veb üçün session token, API üçün access token.

Session token-i XSS hücumlarından necə qorumaq olar?

Əsas qorunma sessiya tokeni ilə cookie-də HttpOnly bayrağının təyin edilməsidir. Bu bayraq cookie-yə JavaScript-dən girişi qadağan edir ki, bu da XSS hücumunu token oğurluğu üçün yararsız edir. Əlavə olaraq, SameSite=Strict bayrağı cookie-nin cross-site sorğulardan göndərilməsinin qarşısını alır və CSRF-dən qoruyur.

Session token nə qədər yaşamalıdır?

İki vaxt limiti tövsiyə olunur: mütləq (8–24 saat — sessiyanın maksimum ömrü) və nisbi (15–30 dəqiqə hərəkətsizlik — bundan sonra sessiya başa çatır). Bank tətbiqləri üçün mütləq limit 1–2 saata endirilir, e-poçt kliyentləri üçün 7 günə çata bilər.

Session fixation nədir?

Session fixation — təcavüzkərin istifadəçini məlum sessiya identifikatorundan istifadə etməyə məcbur etdiyi hücumdur. Qorunma: uğurlu autentifikasiyadan sonra server yeni session token yaratmalı, kliyent tərəfindən göndəriləni davam etdirməməlidir. Köhnə token mənśəyindən asılı olmayaraq ləğv edilməlidir.

Session token REST API-də istifadə oluna bilərmi?

Bəli, session token REST API üçün uyğundur, əgər kliyent onu Authorization başlığında ötürürsə (cookie deyil). Mobil tətbiqlər üçün bu geniş yayılmış təcrübədir. Çatışmazlıq: bir neçə serverə miqyaslama zamanı ortaq sessiya anbarı (Redis) tələb olunacaq ki, bu da arxitekturada nasazlıq nöqtəsi əlavə edir.

Nəticə

  • Session Token — server sessiya məlumatlarına istinad edən stateful identifikator
  • Üstünlük — dərhal ləğv və serverdə sessiyalar üzərində tam nəzarət
  • Anbar — avtomatik təmizləmə üçün TTL ilə Redis, Memcached və ya verilənlər bazası
  • Təhlükəsizlik — SecureRandom generasiyası, HTTPS, HttpOnly + SameSite cookie
  • Session vs JWT — Session-u ləğv etmək asan, JWT-ni miqyaslamaq asan
  • Vaxt limitləri — mütləq (8–24 saat) və nisbi (15–30 dəqiqə hərəkətsizlik)
  • Session fixation — girişdən sonra yeni token yaratmaqla qarşısı alınır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun