Darslik · 2026-05-15 · ~1 daqiqa o‘qiladi · o'rta
JWT autentifikatsiya: xavfsiz amalga oshirish
JWT (JSON Web Token) — API'larda autentifikatsiya uchun keng tarqalgan usul. Lekin uni noto‘g‘ri ishlatish — xavfsizlik teshigi. Keling, to‘g‘ri yo‘lni ko‘ramiz.
JWT qanday ishlaydi#
Token uch qismdan iborat, nuqta bilan ajratilgan: header.payload.signature.
- Header — algoritm turi
- Payload — ma'lumot (foydalanuvchi ID, muddat)
- Signature — server maxfiy kalit bilan imzolagan qism
Muhim: payload shifrlanmagan, faqat base64. Ya'ni har kim uni o‘qiy oladi. Shuning uchun parol yoki maxfiy ma'lumotni JWT ichiga solmang.
Muhim xavfsizlik qoidalari#
1. Qisqa muddat qo‘ying. Access token 15–30 daqiqa yashashi kerak. Uzoq muddatli sessiya uchun alohida refresh token ishlating.
import jwt
from datetime import datetime, timedelta, timezone
payload = {
"sub": user_id,
"exp": datetime.now(timezone.utc) + timedelta(minutes=15),
}
token = jwt.encode(payload, SECRET_KEY, algorithm="HS256")
2. Algoritmni tekshiring. Klassik hujum — alg: none. Har doim
kutilgan algoritmni aniq ko‘rsating:
jwt.decode(token, SECRET_KEY, algorithms=["HS256"]) # faqat HS256
3. Maxfiy kalitni himoyalang. Kalit .envda, kodda emas. Kuchli va uzun bo‘lsin.
4. Tokenni to‘g‘ri saqlang. Brauzerda localStorage XSS'ga zaif.
httpOnly cookie xavfsizroq, lekin CSRF himoyasi kerak bo‘ladi.
Qachon JWT ishlatmaslik kerak#
Agar sizga tokenni tez bekor qilish (logout, ban) kerak bo‘lsa, JWT noqulay — u muddati tugaguncha amal qiladi. Bunday holatda oddiy server-side sessiya (Django'ning standart tizimi) ko‘pincha yaxshiroq. Har doim ehtiyoj asosida tanlang.