API xavfsizligi nima uchun muhim
Frontend xato chiqarsa, foydalanuvchi yangilash tugmasini bosishi mumkin. Lekin API tomonidan ma'lumotlar bazasiga to'g'ridan-to'g'ri kirish bo'lsa, bitta xatolik mingdan ortiq mijoz ma'lumotlarini ochib qo'yishi mumkin. Shuning uchun API qatlami ko'p qatlamli himoyaga ega bo'lishi kerak: autentifikatsiya, avtorizatsiya, rate limiting, input validation va boshqa nazoratlar.
Sayt.uz tajribasida REST va GraphQL API lar har xil yondashuvlarni talab qiladi. REST da har bir endpoint alohida himoyalanadi, GraphQL da esa query depth va complexity nazorati qo'shimcha tarzda zarur. Har ikkala holatda ham asosiy printsiplar bir xil โ har bir so'rovni shubhali deb qarash.
Rate limiting va abuse himoyasi
Rate limiting bir foydalanuvchi yoki IP dan ma'lum vaqt ichida kelishi mumkin bo'lgan so'rovlar sonini cheklaydi. Bu DDoS, brute force va resurs tugatish hujumlaridan himoya qiladi. Token bucket va sliding window algoritmlari eng keng tarqalgan. Sayt.uz da Redis asosida sliding window joriy qilingan: bir IP daqiqada 100 ta, soatda 2000 ta so'rovdan oshmasligi kerak.
Login endpoint uchun alohida qattiq limit qo'yiladi: bitta IP dan 1 daqiqada 5 ta noto'g'ri urinish, keyin 15 daqiqaga blok. Bu credential stuffing hujumlaridan himoya qiladi. Premium foydalanuvchilar uchun limit kengaytirilishi mumkin, lekin har doim absolute maximum bo'lishi kerak.
API key boshqaruvi
API key oddiy parol emas, uni alohida ehtiyot bilan boshqarish kerak. Har bir kalit aniq scope ga ega bo'lishi shart: read-only, read-write, admin va hokazo. Kalitlar hech qachon mijoz tomonida saqlanmaydi, faqat server ichida environment variable yoki secret manager orqali.
Sayt.uz amaliyotida har bir API key ning expiration sanasi bor (odatda 1 yil) va majburiy rotation joriy qilingan. Eski kalit yangisi bilan birga 30 kun ishlaydi, keyin avtomatik o'chadi. Har bir kalit alohida loglanadi va anomaliya aniqlangach, sahibga email yuboriladi.
Autentifikatsiya turlari
API uchun bir nechta autentifikatsiya usuli mavjud: Basic Auth, API key, OAuth 2.0, JWT, mTLS. Basic Auth eng oddiyi, lekin har so'rovda login va parol uzatiladi โ faqat HTTPS ostida ishlatish kerak. API key oddiy server-to-server integratsiya uchun yaxshi.
OAuth 2.0 va JWT esa user-context bilan ishlaydigan API lar uchun ideal. mTLS (mutual TLS) eng yuqori himoya โ ham server, ham mijoz sertifikat bilan tasdiqlanadi, bu financial va healthcare sektorida ishlatiladi. Sayt.uz da public API uchun JWT, partner integratsiyasi uchun mTLS qo'llaniladi.
CORS va same-origin policy
CORS (Cross-Origin Resource Sharing) brauzerning xavfsizlik mexanizmi bo'lib, qaysi domain dan API ga so'rov yuborish mumkinligini boshqaradi. Yomon konfiguratsiya โ Access-Control-Allow-Origin: * โ istalgan saytdan ma'lumot olish imkonini beradi va CSRF xavfini oshiradi.
To'g'ri yondashuv โ whitelist asosida aniq domain'lar ro'yxati. Credentials (cookie) bilan ishlovchi API lar uchun wildcard origin man qilingan, faqat aniq domain ko'rsatilishi kerak. Sayt.uz da har bir muhit (dev, staging, prod) uchun alohida CORS qoidalari va preflight cache 24 soatga sozlangan.
Sayt.uz amaliyot
Sayt.uz da API himoyasi quyidagicha: barcha endpoint HTTPS only, JWT autentifikatsiya, IP va user asosida rate limit, har bir so'rov uchun unique request_id, audit log barcha o'zgartiruvchi operatsiyalar uchun. Versioning URL orqali (/v1, /v2) va deprecation 6 oy oldindan e'lon qilinadi. WAF (Web Application Firewall) Cloudflare orqali joriy qilingan.