Kitobchi API v1
OpenAPI Postman Kitobchi.com

Xavfsizlik

Server tomonidagi himoyalar, integratsiya qoidalari, xato kodlari, token muddatlari va ishga tushirishdan oldingi tekshiruv.

Xavfsizlik modeli

Kitobchi ID OAuth 2.0 Security Best Current Practice (RFC 9700) va OAuth 2.1 talablariga mos qurilgan. Quyidagi himoyalar server tomonida majburiy va o'chirib bo'lmaydi:

HimoyaNimadan saqlaydi
Faqat authorization code oqimi (implicit va password grant yo'q)Tokenlarning URL va brauzer tarixiga tushishi
PKCE S256 barcha ilovalar uchun majburiyKodni ushlab olish (code interception), kod in'eksiyasi
Redirect URI aniq moslik bilan; noto'g'ri bo'lsa hech qayerga yo'naltirilmaydiOchiq redirect, kodni begona saytga oqizish
state va nonce majburiy; javobda iss (RFC 9207)CSRF, ID token qayta ishlatilishi, mix-up hujumi
Kod bir martalik, 5 daqiqa; qayta ishlatilsa shu koddan chiqqan barcha tokenlar bekorO'g'irlangan kodni qayta ishlatish
Har qanday muvaffaqiyatsiz almashtirish urinishi kodni yoqadiPKCE verifier'ni tanlab topish
Refresh token rotatsiyasi + qayta ishlatishni aniqlash (butun oila bekor)O'g'irlangan refresh token
Access token 10 daqiqa, typ: at+jwt; ID tokenni Bearer sifatida qabul qilinmaydiToken almashtirish (token confusion)
Kod, refresh token va client secret bazada faqat hash (SHA-256 / bcrypt)Baza sizib chiqqanda tokenlardan foydalanish
RS256 + kid, kalit rotatsiyasi bilan; alg: none va HS256 hech qachonImzoni soxtalashtirish, algoritm almashtirish
Pairwise sub hamkor ilovalar uchunIlovalararo foydalanuvchini kuzatish
SMS kod: HMAC bilan saqlanadi, 5 urinish, 60 s qayta yuborish, kuniga 10 ta; SMS'da ilova nomi; master-kod yo'qKodni tanlab topish, SMS-bombing, fishing
Kod avval foydalanuvchining faol Kitobchi ilovasiga (rasmiy chat + push), keyin SMS; kod chat bazasi va websocket'ga yozilmaydi, faqat chat egasiga shifrlangan holda beriladiXodimlar yoki do'kon paneli orqali kodning sizib chiqishi, SIM-almashtirish
Kirish sahifalari: frame-ancestors 'none', CSRF, no-store, no-referrer, sessiya ID login'dan keyin yangilanadiClickjacking, CSRF, sessiya fiksatsiyasi
Bloklangan yoki o'chirilgan akkaunt — refresh va userinfo darhol ishlamaydiBloklangan foydalanuvchining eski tokenlari
IP bo'yicha so'rov limitlari (authorize 60/daq, SMS 5/daq, token 60/daq)Brute-force va DoS

Integratsiya qiluvchi uchun qoidalar


Xato kodlari

/authorize (redirect_uri ga qaytadi)

errorSababNima qilish kerak
invalid_requeststate/nonce/PKCE yo'q yoki noto'g'ri, parametr takrorlanganSo'rovni tuzating
unsupported_response_typeresponse_type ≠ codeFaqat code flow
invalid_scopeopenid yo'q, noma'lum yoki ilovaga ruxsat berilmagan scopeScope ro'yxatini tekshiring
access_deniedFoydalanuvchi «Rad etish»ni bosdiOdatiy holat — kirish sahifasiga qaytaring
login_required, consent_requiredprompt=none, lekin kirish yoki rozilik kerakprompt'siz qayta yo'naltiring
request_not_supportedrequest/request_uri parametrlariOddiy query parametrlardan foydalaning

Agar client_id yoki redirect_uri noto'g'ri bo'lsa, xavfsizlik uchun foydalanuvchi ilovangizga qaytarilmaydi — Kitobchi ID xato sahifasini ko'radi.

/token, /revoke (JSON)

HTTPerrorSabab
400invalid_requestParametr yo'q, Content-Type form emas, ikki xil client autentifikatsiyasi
401invalid_clientclient_id/secret noto'g'ri, ilova o'chirilgan, public ilova secret yubordi
400invalid_grantKod/refresh token yaroqsiz, muddati o'tgan, ishlatilgan, PKCE yoki redirect_uri mos emas, akkaunt bloklangan
400invalid_scopeRefresh'da kengroq scope so'raldi
400unsupported_grant_typeFaqat authorization_code va refresh_token
429—So'rov limiti; Retry-After ga amal qiling

invalid_grant refresh paytida kelsa — lokal sessiyani yoping va foydalanuvchini qayta kirishga yuboring. Qayta-qayta urinmang.


Muddatlar

ElementMuddat
Authorization code5 daqiqa, bir martalik
Access token10 daqiqa
ID token1 soat (faqat kirish paytida tekshiriladi)
Refresh token30 kun sirpanuvchi, maksimal 90 kun
Kitobchi ID brauzer sessiyasi30 kungacha (max_age / prompt=login bilan qisqartirish mumkin)
SMS kod5 daqiqa, 5 urinish

Ishga tushirishdan oldin

Zaiflik topdingizmi? Iltimos, ommaga e'lon qilishdan oldin toordaliev@gmail.com ga yoki Telegram: @kitobchi_support ga yozing. Tasdiqlangan topilmalar uchun minnatdorchilik bildiramiz.