CyberSecurity · 23-dars · 10–11-sinf (Enterprise API Defense)
Fan: Kiberxavfsizlik · API Infratuzilma Himoyasi Kohorta: 10-11-sinf Kiber-Muhandis Hafta: 5 (3-soat)

API Xavfsizligi va Rate Limiting: Token Bucket, DDoS va HMAC

Zamonaviy veb va mobil ilovalar to'liq REST, GraphQL va gRPC APIlar orqali ishlaydi. Har bir tugma, avtorizatsiya va to'lov tranzaksiyasi ortida server API endpointi yotadi. Agar API to'g'ri himoyalanmasa, bitta buzg'unchi script soniyasiga 100,000 ta so'rov bilan serverni yiqitishi (DDoS), foydalanuvchilarning barcha ma'lumotlarini qirib olishi (Scraping) yoki so'rovlarni soxtalashtirishi mumkin. Bugungi darsda OWASP API Top 10 tahdidlari, Token Bucket / Leaky Bucket algoritmlari, Redis orqali taqsimlangan Rate Limiting va bank darajasidagi HMAC-SHA256 so'rov imzolashni amalda o'rganamiz.

OWASP API Top 10 (2023 Standarti)

Nega Standart Veb Himoyasi API Uchun Yetarli Emas?

Zaiflik (OWASP)Hujum MexanizmiReal OqibatiMuhandislik Himoyasi
API1: BOLA / IDOR
(Broken Object Level Auth)
Foydalanuvchi /api/orders/401 o'rniga /api/orders/402 deb boshqa odam hisobini so'raydi.Begona mijozlarning barcha shaxsiy va moliyaviy ma'lumotlari sizib chiqadi.Har bir so'rovda obyekt egasi sessiya tokeni egasi bilan solishtiriladi.
API4: Unrestricted Resource
(Resurs chegarasi yo'qligi)
Cheklovsiz so'rovlar yuborish, millionlab sahifalarni paginatsiyasiz tortish.Server protsessori 100% ga to'lib, xotira tugaydi va xizmat to'xtaydi (DoS).Rate Limiting (Token Bucket) va qat'iy limit=50 paginatsiyasi.
API3: BOPLA / Mass Assign
(Property Level Auth)
JSON tanasida qo'shimcha parametrlar: {"role": "admin", "balance": 999999} yuborish.Oddiy foydalanuvchi o'zini bir soniyada tizim adminiga aylantiradi.DTO (Data Transfer Object) oq ro'yxati (Whitelist validation: Zod, Joi).
Infratuzilma darajalari

L3/L4 vs L7 DDoS: Nega HTTP Flood Xavfliroq?

Ilova Qatlami (Layer 7 API DDoS)

  • Hujum turi: HTTP GET/POST Flood, Slowloris, Murakkab DB Qidiruvlari, ReDoS.
  • Xavfli jihati: Har bir so'rov qonuniy va to'g'ri ko'rinadi (TLS o'rnatilgan, HTTP 200). L3/L4 filtrlar buni o'tkazib yuboradi!
  • Oqibati: 10,000 ta og'ir SQL qidiruv so'rovi butun ma'lumotlar bazasini 10 soniyada to'xtatadi.
Matematik modellar

Rate Limiting Algoritmlari: Qaysi Biri Qachon Qo'llanadi?

AlgoritmIshlash MexanizmiKamchiligi (Tuzog'i)Eng Yaxshi Foydalanish
Fixed Window CounterHar daqiqada hisoblagich 0 dan boshlanadi. Masalan: 10:00 da 100 ta so'rov ruxsat etiladi.Chegara effekti (Burst): 10:00:59 da 100 ta va 10:01:01 da yana 100 ta — 2 soniyada 200 ta so'rov o'tadi!Oddiy, resurs kam talab qiladigan ichki keshlar.
Sliding Window LogHar bir so'rovning vaqti (timestamp) xotirada (Redis ZSET) saqlanadi va oxirgi 60 soniya hisoblanadi.Xotira sarfi yuqori: har bir so'rov uchun alohida yozuv (RAM O(N)).Yuqori aniqlik talab qilinadigan moliyaviy tranzaksiyalar.
Token Bucket (Sanoat standarti)Chelakka doimiy tezlikda (r) tokenlar tushadi. Har bir so'rov 1 ta tokenni oladi. Token tugasa — 429 xato.Qisqa muddatli tezlik portlashiga (Burst) ruxsat beradi, ammo uzoq muddatli o'rtacha tezlikni ushlaydi.AWS, Cloudflare, Stripe va Stripe API shlyuzlarining asosi.
Klaster infratuzilmasi

Nega Lokal Xotira Kifoya Qilmaydi? Redis & Atomar Lua

Lokal Xotira Tuzog'i (Memory Leak & Desync)

  • Kompaniyada 4 ta Node.js server nusxasi (Kubernetes Pods) ishlaydi.
  • Agar rate limiter xotirada (RAM) saqlansa, har bir pod o'zining hisoblagichiga ega bo'ladi.
  • Hujumchi 100 ta o'rniga 400 ta so'rov yuborishga muvaffaq bo'ladi (Round-Robin taqsimoti tufayli)!

Redis + Lua: Poyga Xatosi (Race Condition) Himoyasi

  • Barcha serverlar yagona Redis In-Memory Data Store ga ulanadi.
  • Poyga xatosi (Race Condition): Ikki server bir vaqtda GET qilsa va keyin DECR qilsa, hisob adashadi.
  • Yechim — Lua Skripti: Redis bir ipli (single-threaded) bo'lgani uchun, unga yuborilgan Lua skripti 100% atomar (bo'linmas) bajariladi!
Bank darajasidagi yaxlitlik

HMAC-SHA256: So'rovlarni Imzolash va Replay Hujumlariga Barham Berish

Oddiy API Kalitlarining Kamchiligi

  • Ko'p dasturchilar shunchaki Authorization: Bearer my-secret-api-key yuborishadi.
  • Agar server proksisi, log tizimi yoki xodimlardan biri kalitni ko'rib qolsa — kalit butunlay o'g'irlanadi.
  • Hujumchi so'rov parametrlarini o'zgartirib, pul o'tkazmasini o'z hamyoniga yo'naltirishi mumkin.

HMAC-SHA256 va Replay Himoyasi Mexanizmi

  • 1. Kanonik Matn: Method + Path + Timestamp + Nonce + Body birlashtiriladi.
  • 2. HMAC Imzo: Server va mijoz o'rtasidagi maxfiy kalit bilan HMAC-SHA256 hisoblanadi.
  • 3. X-Timestamp: Agar so'rov vaqti 5 daqiqadan eski bo'lsa — rad etiladi (Time Skew Expired).
  • 4. X-Nonce (Number Once): Ishlatilgan har bir Nonce Redis keshda 5 daqiqa saqlanadi. Bir xil so'rovni ikkinchi marta yuborib bo'lmaydi (Replay Attack barbod bo'ladi)!
Dasturiy realizatsiya

Node.js da HMAC Tekshirish va Token Bucket Middleware

const crypto = require('crypto');

// 1. HMAC-SHA256 Request Signature Verification Middleware
function verifyHmacSignature(secretKey, nonceCache) {
  return (req, res, next) => {
    const signature = req.headers['x-signature'];
    const timestamp = parseInt(req.headers['x-timestamp'], 10);
    const nonce = req.headers['x-nonce'];

    if (!signature || !timestamp || !nonce) {
      return res.status(401).json({ error: 'Missing security headers' });
    }

    // Replay attack prevention: 5-minute validity window
    const now = Math.floor(Date.now() / 1000);
    if (Math.abs(now - timestamp) > 300) {
      return res.status(401).json({ error: 'Request timestamp expired (Time Skew)' });
    }

    // Check if nonce was already consumed
    if (nonceCache.has(nonce)) {
      return res.status(401).json({ error: 'Replay attack detected: Nonce already used' });
    }
    nonceCache.add(nonce); // Store nonce in memory/Redis with TTL

    // Build canonical string and recalculate HMAC
    const payload = JSON.stringify(req.body || {});
    const canonical = `${req.method}|${req.path}|${timestamp}|${nonce}|${payload}`;
    const expectedSig = crypto.createHmac('sha256', secretKey).update(canonical).digest('hex');

    // Constant-time comparison to prevent timing attacks
    if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSig))) {
      return res.status(403).json({ error: 'Invalid HMAC signature: Payload tampered!' });
    }
    next();
  };
}
Haqiqiy hodisalar

T-Mobile 2023 Falokati va Cloudflare 71M RPS Rekordi

T-Mobile 2023: 37 Million Mijoz Ma'lumotlari Sizishi

  • Zaiflik: Kompaniyaning ochiq API endpointida Rate Limiting va BOLA/avtorizatsiya to'g'ri o'rnatilmagan edi.
  • Hujum: Hacker oddiy skript orqali 37 million mijozning ismi, tug'ilgan sanasi, manzili va telefon raqamlarini tortib oldi.
  • Oqibat: Kompaniyaga $350 million jarima va jiddiy obro' yo'qotilishi.

Cloudflare & HTTP/2 Rapid Reset (CVE-2023-44487)

  • Tarixdagi eng yirik L7 hujum: Soniyasiga 71 million so'rov (RPS) yuborildi.
  • Hujum hiylasi: HTTP/2 protokolidagi RST_STREAM kadrini suiiste'mol qilib, ulanishni yopmasdan yangi so'rovlar oqimi yuborilgan.
  • Natija: Taqsimlangan Token Bucket va Anycast arxitekturasi tufayli Cloudflare mijozlari buni sezmadi ham!
Korporativ himoya

API Gateway, WAF va TLS Fingerprinting (JA4)

JA4 / TLS Barmoq Izi (Anti-Bot Texnologiyasi)

  • Hacker o'z skriptida User-Agent: Mozilla/5.0 deb brauzerni soxtalashtirishi mumkin.
  • Ammo Python requests yoki Golang mijozining TLS Handshake parametrlari (Cipher Suites, Extensions) haqiqiy Chrome brauzeridan mutlaqo farq qiladi!
  • JA4 algoritmi: TLS ulanishidan hosil bo'lgan xesh orqali buzg'unchi botlar IP manzilini o'zgartirsa ham 100% aniqlanadi va bloklanadi!
Interaktiv Studio

Amaliy Ish: API Defender Studio — Token Bucket va HMAC Laboratoriyasi

Laboratoriya Missiyasi: API Defender Studio (12 Daqiqa)

Brauzerda studio/index.html ni oching. Terminal yoki server o'rnatish shart emas! Jonli Token Bucket chelagi, DDoS hujumlari va WebCrypto HMAC-SHA256 imzolashni sinovdan o'tkazing.

KvestAmal va VazifaKutilayotgan Natija (Tekshirish)
1-Kvest: Token Bo'shatish
(2 Ball)
1x So'rov tugmasini ketma-ket 10 marta bosing (Capacity: 10, Refill: 2/s).Chelakdagi tokenlar 0 ga tushadi va birinchi HTTP 429 Too Many Requests bloklanadi.
2-Kvest: 50 RPS DDoS Hujumi
(3 Ball)
50 RPS Portlash (DDoS) tugmasini bosing va 20 tadan ko'p so'rov bloklanishini kuzating.Chelak to'lib-toshib ketadi, qonuniy limitdan oshgan barcha so'rovlar HTTP 429 bilan qaytariladi.
3-Kvest: Soxtalashtirish (Tamper)
(3 Ball)
HMAC tabida Soxtalashtirish (Tamper Attack) tugmasini bosing (summa $100 -> $999,999 ga aylanadi).Kanonik xesh buziladi: Server HTTP 403 / 401 Signature Mismatch! deb so'rovni bekor qiladi.
4-Kvest: Replay Attack
(2 Ball)
Qonuniy yuborilgan so'rovdan so'ng Replay Attack Sinovi tugmasini bosing.Server Nonce keshini ko'rib, HTTP 401 Replay Attack Detected: Nonce already consumed beradi.
Muhandislik xulosasi

API Xavfsizlik Choralarining Taqqoslama Matritsasi

Himoya QatlamiTo'xtatadigan TahdidiBajarilish NuqtasiKechikish (Latency)
mTLS / TLS 1.3Paketlarni tutish (Sniffing), MitM, ruxsatsiz mijoz ulanishi.Transport darajasi (Reverse Proxy / Envoy).< 1 ms (Handshake paytida 1 marta).
Distributed Rate LimiterL7 DDoS, Brute-Force parol sindirish, Data Scraping.API Gateway + Redis Lua Engine.~1–2 ms (In-memory Redis query).
HMAC-SHA256 SigningSo'rov parametrlarini o'zgartirish (Tampering), Replay Attack.Ilova darajasi (Node.js / Go Middleware).< 0.1 ms (Lokal kriptografik hisoblash).
Mustaqil muhandislik ishi

Xulosa va Uy Vazifasi: Bank API Himoya Spetsifikatsiyasi

Dars Xulosasi

  • Oddiy autentifikatsiya (API key) yetarli emas: har bir API endpointi Rate Limiting va BOLA tekshiruviga ega bo'lishi shart.
  • Token Bucket algoritmi resurslarni himoyalagan holda qonuniy foydalanuvchilarning tezkor so'rovlariga moslashadi.
  • Kritik tranzaksiyalar doimo HMAC imzo, Nonce va Timestamp bilan replay hujumlaridan himoyalanishi shart.

Uy Vazifasi: Bank Transfer API Arxitekturasi (10 Ball)

  • Bankning /api/v1/transfers endpointi uchun himoya tizimi arxitekturasini loyihalashtiring.
  • Talablar: 1) Idempotency Key orqali dublikatlarni to'xtatish. 2) Token Bucket (5 req/min). 3) HMAC-SHA256 imzosi tekshiruvi. 4) BOLA tekshiruvi.
  • Kod va tushuntirish xatini Markdown formatida taqdim eting.
Target International School Target International School Введение 1 / 1 0–3