API təhlükəsizliyi və sorğu filtrasiyası
1) Niyə lazımdır
API platformanın xarici və daxili sərhədidir. Sorğuların autentifikasiyası, avtorizasiyası, validasiyası və ya normallaşdırılmasında hər hansı bir səhv zəifliklərin istismarına çevrilir (BOLA/İDOR, injection, SSRF, kütləvi ifrat, resurs tükənməsi). Məqsəd: ölçülə bilən SLO və risk nəzarəti ilə perimetrdən biznes qaydalarına qədər çox səviyyəli qorunma (defense-in-depth) yaratmaq.
2) API-nin inventarlaşdırılması və təsnifatı
API kataloqu: bütün xidmətlərin reyestri, sahibləri, versiyaları, müştəri növləri (web, mobile, partnyorlar), rejimi (açıq/tərəfdaş/daxili), PII/maliyyə məlumatları.
Kritik: Yüksək (maliyyə əməliyyatları/avtorizasiya), Orta (profil oxu), Aşağı (ictimai kataloqlar).
Hücum səthi: REST, GraphQL, gRPC, WebSocket, webhooks.
Status: prod/staging/experimental, deprekeyt siyasəti, token/açar ömrü.
Shadow/tərk API: log ingrest vasitəsilə aşkar, eBPF/Service Mesh telemetriya, kataloq ilə müqayisə.
3) Təhdid modeli (qısa)
İdentifikasiya: token oğurluğu, seans fiksasiyası, MitM, replay.
Avtorizasiya: BOLA/İDOR, üfüqi/şaquli eskalasiya.
Giriş: enjeksiyon (SQL/NoSQL/LDAP), şablon/serilizasiya, yol traversal, başlıqlar.
Trafik: DDoS/L7-fluds, yavaş sorğular, fantom retrajlar.
İnteqrasiya: təhlükəsiz webhooks, URL parametrləri vasitəsilə SSRF, download fayllar/skanlar.
Məntiq: bonuslardan sui-istifadə, yarış, uyğunsuzluq.
4) Əsas təhlükəsizlik standartı (minimum)
1. TLS 1. 2 + hər yerdə; HSTS; zəif şifrələr söndürülmüşdür.
2. Autentifikasiya: müştərilər üçün OAuth2/OIDC, mTLS/və ya HMAC - xidmət-xidmət.
3. Avtorizasiya: mərkəzləşdirilmiş PDP (RBAC/ABAC), obyekt səviyyəsində yoxlama (BOLA).
4. Validasiya: sərt sxem (OpenAPI/JSON Schema/Protobuf), lazımsız sahələrdə imtina.
5. Limitlər: rate/quotas + burst, per-müştəri/per-IP/per-token.
6. Write əməliyyatlarında idempotentlik, təkrarlardan/yarışlardan qorunma.
7. WAF/Gateway filtrasiya: yolların/başlıqların normallaşdırılması, deny vərəqləri, payload-anti-nümunələr bloku.
8. Secrets: KMS/Vault, açar/sertifikatların rotasiyası, sızma nəzarəti.
9. Müşahidə: izləmə, audit-təhlükəsizlik (kim/nə/nə zaman/nəticə), risk.
10. Prosedurlar: playbook hadisələr, test cases və müntəzəm pentests/DAST.
5) Tokenlərin autentifikasiyası və idarə edilməsi
OAuth2/OIDC: qısa ömürlü access-tokenlər, OIDC ilə ciddi şəkildə refresh; audience/issuer/exp gateway üzərində yoxlanılır.
JWT: RS256/ES256; minimum terminal dəsti; 'nbf/exp/aud' tələb olunur; PII saxlama qadağası. JWKS vasitəsilə açarların rotasiyası.
DPoP/PoP: replay/oğurluq riskini azaltmaq üçün tokenin müştəri açarına bağlanması.
Daxili sistemlər və etibarlı tərəfdaşlar üçün mTLS (CN/SAN, CRL/OCSP sertifikatlaşdırma).
HMAC (imzalar): determinated kanonikalizasiya (üsul + yol + timestamp + nonce + body-hash); icazə verilən vaxt pəncərəsi (± 300s).
Brauzer seansları: SameSite = strict/lax, HttpOnly, Secure; CSRF-dən qorunma (double submit/state-tokenlər).
Müştəri saxlama: mobil - təhlükəsiz saxlama (Keychain/Keystore), debag qorunması, pinninq sertifikatları.
6) Avtorizasiya (BOLA-first)
Object-level: Hər bir əməliyyat xüsusi resurs (resource owner/scope/atributlar) hüququnu yoxlayır.
RBAC/ABAC: rollar + atributlar (ölkə, seqment, risk limitləri, KYC səviyyəsi).
Siyasətçilər: deny-by-default; açıq allow; siyasət versiyası; mənfi hallar üçün testlər.
Cache Solutions: adaptive TTL + rolları/seqmentləri dəyişdikdə əlillik.
7) Filtrasiya və tələblərin normallaşdırılması (Gateway/WAF)
Normallaşma: təkrar slaytların sıxılması, qadağa '../', bir dəfə deşifrə, boşluqların/sıfır baytların kəsilməsi.
Başlıqlar: allow-list ('Host', 'Content-Type', 'Accept', 'Authorization', 'Date', 'Idempotency-Key', lazımi trace-başlıqlar).
Metodlar: 'GET/HEAD' bədən olmadan; 'POST/PUT/PATCH' - 'application/json' növü ilə və ya ciddi icazə verilir.
Ölçüləri: max-body, max-headers, max-path; early-reject 413/431.
Fayllar: MIME validator, antivirus/sandbox, aktiv məzmun qadağası, resise/sanitize görüntülər.
URL-yönləndirmə/fetçi: SSRF bloku (deny private ranges/metadata IP, sxem yalnız 'https', allow-list domenləri).
SQL/NoSQL nümunələri: WAF rule-sets vasitəsilə enjeksiyon işarələri + server parametrləşdirilməsi sorğular.
Başlıq siyasəti nümunəsi (psevdo formatı)
deny_headers: ["X-Forwarded-Proto","X-Original-URL","Proxy-Connection","Destination"]
require_headers: ["Authorization" (для protected), "Content-Type" (для write)]
strip_duplicates: true max_header_count: 32 max_header_size: 16KB
8) Limitlər, kvotalar və antibot qorunması
Rate limiting: token-bucket/ leaky-bucket; səviyyələri - per IP, per API key, per user, per org.
Quotas: gündəlik/aylıq, write/expensive metodları üçün ayrı.
Adaptasiya: anomaliyalar zamanı dinamik sərtləşmə (sudden burst/credential stuffing).
Slow-loris/slow-POST: oxu/keep-alive vaxtları, paralel əlaqələrin məhdudlaşdırılması.
Antibot: device-fingerprint, davranış əlamətləri, proof-of-work/capcha artan risk, tor/proxy şəbəkələrinin siyahısı.
IP-nəzarət: Geo/ASN filtrləri, «çirkli» alt şəbəkələrin deny vərəqləri, tərəfdaşlar/admin panelləri üçün allow vərəqləri.
9) Giriş və sxemlərin validasiyası
Fail-closed: sxemdən keçməyən hər şey - 400. Əlavə sahələr - rədd.
Növləri/diapazonları: ədədlər, tarixlər (UTC/ISO-8601), enum qiymətləri, sətir uzunluqları, reqeksplər.
JSON keyfiyyəti: max-nesting, böyük massivləri/açarları qadağan, canonical order (isteğe bağlı).
Biznes-validasiya: «Idempotency-Key» üzrə idempotentlik; anti-frod qaydaları (əməliyyatların tezlik limitləri, amount caps).
GraphQL: depth/complexity-limitləri, allow-listed queries, per-field authorization.
gRPC: ciddi Protobuf sxemləri, məcburi sahələr, mesaj ölçüsü limitləri.
10) Webhooks və xarici çağırışlar
İmza: HMAC/nonce; emaldan əvvəl yoxlama; pəncərə +/- 5 dəqiqə.
Çatdırılma: eksponent fasilə və jitter ilə retras; max-cəhd; hadisə ID-nin deuplikasiyası.
IP allow-list təchizatçı; ayrı alt domen/yol; minimum hosting yığını.
Cavablar: 2xx yalnız uğurlu daxili yazıdan sonra; əks halda 4xx/5xx başa düşülən kodu ilə.
Çıxış SSRF nəzarəti: callback URL - allow-list, şəxsi ünvanların qadağan edilməsi.
11) Şifrələmə və sirlərin idarə edilməsi
Kanalda: TLS 1. 2+/1. 3, pinning, ciddi şifrə siyasəti.
Dinc: DB/obyekt anbarının şifrələnməsi, PII/findan üçün fərdi açarlar.
KMS/Vault: mərkəzləşdirilmiş gizli saxlama, qısa TTL, avtomatik rotasiya.
Açarlar və sertifikatlar: mühit üçün ayrı; emissiya auditi; log çıxış qadağan.
Token-introspection: offline-rəy siyahıları (revocation), qısa 'exp'.
12) Müşahidə, audit və cavab
Təhlükəsizlik qeydləri: autentifikasiya cəhdləri/uğurları, avtorizasiya uğursuzluqları, rate-limit hadisələri, rolların/limitlərin dəyişdirilməsi.
Tracking: correlation-ID keçid; xarici çağırışlar izləmə.
Metriklər: RPS, P95/P99 latency, error-rate kodları, 401/403/429 payı, hit-rate limitləri, anomaliyalar.
Alertlər: 401/403/429 sıçrayışları, 5xx böyümə, tez-tez idempotency münaqişələri, QL-complexity qrafiklərinin kəskin sapmaları.
Playbooks: açarları/tokenləri bloklamaq, qaydaları tez geri qaytarmaq, deny siyahısını qızdırmaq, xidmət sahiblərini xəbərdar etmək.
Forensika: mübahisəli payload (PII təhlükəsiz redaktə ilə), izolyasiya stendində replay saxlamaq.
13) Müştəriyə səhvlər və cavablar
Vahid səhv formatı (kod, mesaj, trace-id, kateqoriya).
Sızma yoxdur: SQL, cədvəl adları, daxili ID-lər açıqlanmır; 403 əvəzinə «niyə dəqiq deyil».
Kodlar: 400 (validasiya), 401 (identifikasiya yoxdur), 403 (heç bir icazə yoxdur), 404 (varlığı gizlətmək), 405/406, 413/429, 500/503.
Retry-Hints: для 429 — `Retry-After`; idempotentlik üçün - eyni açarla təkrar məsləhət.
14) Memarlıq nümunələri
Zero-Trust: mTLS, bütün xidmətlər arasında açıq avtorizasiya, minimal imtiyazlar.
API-şluz + WAF + xidmət-mesh: vəzifə bölgüsü - perimetri, L7 siyasəti, daxili identifikasiya.
Canary/Blue-Green: Yeni filtrasiya qaydalarını tədricən müşahidə ilə çıxarın.
Fail-closed: kritik write üçün - səhv əməliyyata yol verməkdən daha təhlükəsiz imtina etmək daha yaxşıdır.
Backpressure: növbələr/buferlər, circuit breaker, timeouts/budgets.
15) Praktiki qaydaların nümunələri (psevdo- )
15. 1 Yol və metodların məhdudlaşdırılması
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 İdempotentlik
require_header: Idempotency-Key (UUIDv4)
store: redis:ttl=24h on_duplicate: return_previous_result
15. 3 Sorğu imzası (HMAC)
signature:
scheme: "HMAC-SHA256"
required_headers: ["X-Signature","X-Timestamp","X-Nonce"]
allowed_drift: 300s string_to_sign: METHOD + "\n" + PATH + "\n" + SHA256(body) + "\n" + X-Timestamp + "\n" + X-Nonce
15. 4 SSRF qorunması
outbound_http:
allowlist_domains: ["kyc. partner. com","psp. example. net"]
block_private_ip: true require_https: true
15. 5 GraphQL limiti
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) iGaming/Maliyyə Xüsusiyyətləri
Seqment limitləri: COP/ölkə/risk profilindən asılıdır.
Müvəqqəti pəncərələr: depozit/çıxarış tezliyi qaydaları, əməliyyatlar arasında «soyutma».
Anti-sui-istifadə bonusları: hesaba/cihaza/IP/ödəniş alətinə bağlı bloklama.
Tənzimləyicilərin tələblərinin auditi: hərəkət və həllərin qeydlərinin (KYC/AML) saxlanması, retenşn dövrləri, dəyişməz jurnallar.
17) Prod-hazırlıq nəzarət siyahısı
- Tam API kataloqu və məlumat axını xəritəsi (PII/maliyyə qeyd olunur).
- OpenAPI/Protobuf sxemləri, CI-də validasiya testləri və müqavilələr.
- mTLS/HMAC/OAuth2 konfiqurasiya; qısa TTL tokenlər; açarların rotasiyası.
- BOLA testləri və mənfi avtorizasiya halları; mərkəzləşdirilmiş PDP.
- Limitlər/kvotalar/anti-bot, slow-loris qorunması; IP filtrləri.
- WAF/Gateway normallaşdırma qaydaları, anti-inyeksiya işarələri.
- Write əməliyyatlarının idempotentliyi; replay qorunması.
- Webhook imzaları və allow-list; izolyasiya edilmiş endpoints.
- KMS/Vault sirləri; şifrələnmiş storajlar; anomaliyada alertlər.
- Dashbordlar, alertlər, audit-loqlar; təcrübəli playbooks hadisələr.
- Müntəzəm pentest/DAST/SAST, boşluq yolları və deple yamalar.
18) Antipattern (nə mümkün deyil)
Etibarlı 'X-Forwarded-' Onun perimetri sərt TLS terminasiyası olmadan.
Ixtiyari «Content-Type» və «yumşaq» JSON sxemlərini qəbul edin.
Uzun ömürlü JWT geri çağırılmadan/rotasiya.
Mərkəzləşdirilmiş siyasət olmadan kodda rolları və biznes qaydalarını qarışdırın.
Sirləri olan loqlar/PII; ətraflı 500-mesajlar.
Limitsiz və avtorizasiyasız «müvəqqəti» açıq endpointlər.
19) Version və deprekeyt
Yol/başlıq versiyaları; dəstək siyasəti (məsələn, N-2).
Elanlar: Deprekeytin vaxtı, köhnə versiyaların istifadəsinin monitorinqi, idarə olunan bağlantı.
Uyğunluq: Müştərilərin/tərəfdaşların müqavilələri və test matrisləri.
20) Təhlükəsizlik testi
Sxemlərin/siyasətlərin kontrakt testləri, giriş fuzzing, negative auth.
Limitlər/kvotalar ilə performans profilləri, qoruyucu sınaq (chaos-trafik).
Red-team/bug-bounty: BOLA, SSRF, imzalar/repleylər, GraphQL-complexity ssenariləri.
TL; DR
1. API kataloqu + ciddi sxemlər.
2. müştərilər üçün OAuth2/OIDC, mTLS/HMAC daxili.
3. Hər resurs üçün BOLA perimetri (ABAC/RBAC).
4. Filtrasiya: yolların/başlıqların normallaşdırılması, limitlər, WAF qaydaları.
5. İdempotentlik, imzalar, replay/SSRF-dən qorunma.
6. KMS/Vault və sirlərin rotasiyası.
7. Müşahidə, risk, playbooks.