Casino API sorğularının təhlükəsizliyini necə izləyir
Niyə iGaming-də API təhlükəsizliyi kritik
API - Casino sinir sistemi: bahislər, pul kisəsi, kassa, oyun provayderləri, KYC/KYT, telemetriya. Hər hansı bir dəlik = pul, PII, lisenziya, nüfuz. adi e-ticarət fərqli olaraq, casino xüsusiyyətləri var: real-vaxt pul, tənzimləyici, hücum yüksək motivasiya və mürəkkəb inteqrasiya matris.
Memarlıq prinsipləri (mühafizənin «skeleti»)
1. Zero-Trust & Least Privilege. Şəbəkəyə və ya müştərilərə etibar etmirik. Hər çağırış yoxlanılır, giriş minimal tələb olunur (RBAC/ABAC).
2. Domen ayrılması. Pul/PII/kassa/oyun şlüzləri - müxtəlif perimetrlər və şəbəkələr, müxtəlif açarlar və siyasətlər.
3. Vahid API qapısı. Nöqtə: mTLS, WAF/bot menecmenti, OAuth2/JWT, rate limits, threat-feeds, loging.
4. Default müşahidə. Tracing, 'traceId' korrelyasiyası, anomaliyada alertlər (SLO/SIEM).
5. Təhlükəsiz defolt. Qısa TTL tokenləri, «geniş» CORS qadağan, NetworkPolicy-də deny-by-default.
Autentifikasiya və avtorizasiya
Servislərarası zənglər: mTLS + qısa ömürlü JWT (5-10 dəq) ilə 'aud/iss/kid' və açar rotasiyası; isteğe bağlı HMAC-imza bədən.
Çağırış bütövlüyü: imzalar, vaxt, idempotentlik
Kanonlaşdırılmış təqdimat sorğusunun HMAC-imzası: parametrlərin çeşidlənməsi, sabit JSON serializasiyası (lazımsız boşluqlar olmadan, eyni açar sırası), başlıqlar:
X-Request-Timestamp: 2025-10-17T14:22:05Z
X-Request-Nonce: 8c1c...fa
X-Request-Signature: v1=HMAC-SHA256:base64(…)
X-Idempotency-Key: c0a4-77f…
Replay-qorunması: icazə verilən vaxt pəncərəsi (± 300 san), cache-də 'nonce' yoxlama.
Pul/vebhuk üçün Idempotency-Key: sorğunun təkrarı ikinci debet/kredit yaratmır.
mTLS cüzdan/kassa/provayderlərə: nəqliyyatın şifrələnməsi + tərəflərin qarşılıqlı yoxlanılması.
Qorunan POST nümunəsi:
POST /wallet/debit
Content-Type: application/json
X-Request-Timestamp: 2025-10-17T14:22:05Z
X-Request-Nonce: 8c1c0cfa
X-Idempotency-Key: 9a7f-2b1c
X-Request-Signature: v1=HMAC-SHA256:Z2V…==
{
"playerId":"p_123", "amount":"10. 00", "currency":"EUR", "reason":"bet. place", "roundId":"R-2025-10-17-PRAGM-12"
}
Giriş validasiyası: sxemlər və kanonikasiya
JSON Schema/OpenAPI müqavilə kimi. Hər hansı bir sətir - növ, diapazon və whitelists (valyuta/ölkə ISO kodları, status enum) validasiya vasitəsilə.
Size limits: bədən ölçüsü və massivlərin məhdudlaşdırılması, «dərin» investisiyaların qadağan edilməsi.
İmza/log əvvəl JSON kanonikləşdirilməsi, xüsusi simvolların ekranlaşdırılması, ciddi 'Content-Type'.
Kütləvi təyinatın bloklanması (mass assignment): açıq alow-lists sahələri.
Səthin qorunması: WAF, botlar, sürət
WAF/bot menecmenti: əlamətlər və davranış aşkarlanması (rate, geo, device-fingerprint).
Rate limits/quotas: IP/token/müştəri/metodu ilə; pul və qeyri-pul üçün ayrı-ayrı limitlər.
DoS/abuse-nəzarət: circuit-breakers, timeouts, backpressure, «boz siyahılar».
CORS: spot 'Access-Control-Allow-Origin', wildcard qadağası və 'Authorization' ehtiyac olmadan brauzer cross-origin.
OWASP API Top-10 → xüsusi tədbirlər
BOLA/BFLA (Broken Object/Function Level Auth): ABAC resurs sahibi, 'playerId' filtrləri, «yad» identifikatorların qadağan edilməsi.
Injection/SSRF: parametrləşdirilmiş sorğular, server zənglərində xarici URL-lərin qadağan edilməsi, allowlist hosts.
Excessive Data Exposure: cavabların şapinqi (fields mask), pozulma, detalların sızması olmadan səhvlərin normallaşdırılması.
Security Misconfiguration: TLS/şifrələrin vahid versiyaları, CSP/Permissions-Policy/Referrer-Policy başlıqları.
Unsafe Consumption of APIs: Taymaut, retras, deduplikasiya ilə provayder API üzərində sarğı.
PII və məxfilik
PII tokenlaşdırma və şifrələmə (oyunçu atributları, KYC sənədləri): KMS/HSM, sahələr - AES-GCM.
Data minimization: hadisə/log - yalnız təxəllüslər ('playerId'), heç vaxt - sənəd/kart nömrələri.
Retention: TTL yurisdiksiya tələblərinə uyğun olaraq domenlər (cüzdan/oyun/kassa) üçün fərqlidir.
Rollar üzrə giriş: PII oxunuşunun DB və xidmətlər (row-level security/policy) səviyyəsində fərqləndirilməsi.
Təhlükəsiz vebhuk və kassa
İki faktorlu yoxlama: mTLS + HMAC-provayder imzası.
Anti-replay: 'X-Idempotency-Key', 'X-Timestamp', vaxt pəncərəsi.
Allowlist IP/ASN provayder statik çıxış egress-IP var.
«Zəhərli» payloads: ölçü limitləri, istifadə olunmayan sahələrin iynəsi, ciddi sxem.
Audit və test-end nöqtəsi: provayder qum qutusu + müqavilə testləri.
Sirlər və açarlar
Saxlama: KMS/HSM/Secrets-manager, heç vaxt şifrələmə olmadan git/mühit dəyişənləri.
Rotasiya: avtomatik, başlıqlarda/meta məlumatlarda 'kid', güzəştli açarların geri çağırılması.
Giriş: break-glass prosedurları, sirlərə bütün müraciətlərin qeydiyyatı.
Logi, treys, alert
Korrelyasiya: 'traceId/requestId/playerId/roundId' hər təbəqədə (ingress → API → cüzdan → provayder → vebhuk).
Anomaliyalar: '401/403/429' sıçrayışı, 'VOID' artımı, 'bet' sıçrayışları. regionlarda reject ', HMAC/mTLS uğursuzluqları.
Hücum siqnalları: bir çox 'nonce' -povtors, köhnə 'timestamp' cəhdləri, uzun bədən, naməlum 'kid'.
Log saxlama: dəyişməz (WORM), ayrı giriş sahəsi, PII maskalanması.
Test planı və keyfiyyət nəzarəti
Static/Dynamic AppSec: hər CI-də SAST/DAST, sirr işarələri, asılılıqlar - SCA.
Pentestalar və red-tim: replay ssenariləri, yanlış kanalda imza, rate-limits, BOLA, SSRF-dən yan keçmək.
Müqavilə testləri: OpenAPI/JSON-Schema, «negative cases».
Chaos/latency drills: provayder/kassa zamanı davranış, idempotentlik düzgünlüyü.
Bug-bounty: ayrı perimetri və reportinq qaydaları ilə proqram.
Faydalı başlıqlar və parametrlər
`Strict-Transport-Security: max-age=63072000; includeSubDomains; preload`
`Content-Security-Policy: default-src 'none'; frame-ancestors 'none "(API domenləri üçün)
`Referrer-Policy: no-referrer`
`Permissions-Policy: geolocation=(), microphone=(), camera=()`
`X-Content-Type-Options: nosniff`
'Cache-Control: no-store' private endpoints
Səhv cavabları: vahid format
json
{ "error":"INVALID_SIGNATURE", "code":"SEC_401", "traceId":"tr_5f1", "ts":"2025-10-17T14:22:06Z" }
Anti-nümunələr (təhlükəsizlik pozur)
Uzun ömürlü JWT/refresh tokenləri rotasiya və cihaz ilə əlaqələndirilmədən.
«Olduğu kimi» imzası olmadan canonikalization JSON → ayrılması yoxlamalar.
Pul/vebhuklarda 'Idempotency-Key' olmaması → ikiqat silinmə.
Wildcard-CORS və 'Access-Control-Allow-Origin' ilə «Authorization».
PII/Secrets ilə log, «hər kəs üçün» log paylaşımı.
Bütün inteqrasiyalar üçün vahid ümumi HMAC açarı.
JSON ölçüsü/dərinliyi üçün heç bir limit yoxdur, taymaut və circuit-breakers yoxdur.
Daxili detalları aşkar edən səhvlər (stack traces, SQL, kitabxana versiyaları).
Təhlükəsizlik çek siyahısı Casino API
Perimetr və nəqliyyat
- Servislərarası və provayder kanallarında mTLS; TLS 1. 3 hər yerdə.
- WAF/bot menecmenti, rate limiting, threat-feeds ilə API-şlyuz.
- CORS - yalnız ünvanlı, heç bir wildcard.
Autentifikasiya/avtorizasiya
- Müştərilər üçün OAuth2/OpenID, TTL ilə JWT ≤ 10 dəq, açar rotasiyası ('kid').
- RBAC/ABAC domen; admin - SSO + MFA + IP-allowlist.
Bütövlük və təkrar sorğular
- HMAC imzası, 'X-Request-Timestamp', 'X-Request-Nonce' və vaxt pəncərəsi.
- 'X-Idempotency-Key' pul, vebhuk, kassada; açarları cache-də saxlamaq.
Validasiya
- OpenAPI/JSON-Schema, JSON kanonikasiyası, ölçü/dərinlik limitləri.
- Sahələr üçün maskalama və whitelists; qadağa mass assignment.
PII və məlumatlar
- PII (KMS/HSM) tokenizasiya/şifrələmə, minimallaşdırma, ayrı-ayrı retensiya siyasətləri.
- PII/telemetriya/pul üçün ayrılmış anbarlar.
İnteqrasiya
- Vebhuke: mTLS + HMAC, allowlist IP, anti-replay, müqavilə testləri.
- Kassa/kriptovalyutası: iki provayder və müxtəlif açarlar/şəbəkələr, giriş/çıxış idempotency.
Müşahidə
- Tracing with 'traceId/playerId/roundId', hücum siqnalları üçün risk.
- Log dəyişməz (WORM), heç bir PII/secrets.
Proseslər
- CI SAST/DAST/SCA, pentestas/red tim müntəzəm, bug-bounty.
- Runbooks hadisələr: açarları revoke, geri, rabitə.
iGaming-də API təhlükəsizliyi «WAF qoymaq» deyil. Bu sistem: mTLS + imzalar + idempotentlik, ciddi validasiya və kanonikasiya, perimetr və sürət qorunması, PII izolyasiya, təhlükəsiz vebhuk kassa, müşahidə və müntəzəm yoxlamalar. Bunu mühəndislik mədəniyyətinin bir hissəsi halına gətirərək, məhsulun sürətini və buraxılışların sabitliyini qoruyarkən pul, oyunçu və lisenziyanı qoruyursunuz.