Bot Protection və antifrod API
1) Niyə lazımdır
Botlar və təcavüzkarlar artım və pul giriş nöqtələrinə hücum edirlər: qeydiyyat, giriş (ATO), depozitlər/nəticələr, promo-mexanika, oyun kataloqları/əmsalları. Əl qaydaları və təmiz rate limiti artıq kifayət deyil: çox səviyyəli siqnallar, real vaxt skorları və biznes hadisələrindən (çarjbeklər, chargeback-ratio, KYC-feyllər) əks-əlaqə ilə həll nəzarəti (allow/deny/challenge/throttle) lazımdır.
2) Təhdidlərin taksonomiyası
Qeydiyyat/onbording: kütləvi hesablar, birdəfəlik e-mail/SİM banklar, cihazların fermaları.
ATO (Account Takeover): credential stuffing, password spraying, session hijack.
Bonus sui-istifadə: multi-akkauting, arbitraj geo/yurisdiksiya, özünü-exclusion dolama.
Kartinq/ödəniş frod: kart testi, oğurlanmış pul kisələri, geri qaytarmalar.
Scraping/inventar: aqressiv məzmun, qiymətlər, əmsallar.
API-DoS aşağı intensivliyi: tısbağalar hücum, slow-POST, mobil SDK emulasiya.
Vebhuki/inteqrasiya: HMAC/mTLS olmadan bildirişlərin saxtalaşdırılması, replay.
3) Mühafizə arxitekturası
3. 1 qat
1. Edge (CDN/WAF/şluz): erkən uğursuzluqlar (ASN/Geo/IP-nüfuz), yüngül çağırışlar, limitlər, PoW.
2. Risk API (Risk PDP): mərkəzləşdirilmiş qaydalar/ML mühərriki; ответ — `decision`, `score`, `reason`, `ttl`.
3. App səviyyəsi: domen invariantları, biznes məntiqi (limitlər, KYC, AML), asinxron review.
4. Hadisələr axını: Kafka/Kinesis → feature store/model → ödənişlər/mübahisələr rəy.
3. 2 Həllin konturu
[Request] → Edge Plugins → (enrich) → Risk API (rules+ML) → Decision:
allow deny throttle challenge(type=captcha sms PoW biometry)
Həll açarla (məsələn, device × account × route) 'ttl' saniyədə keşləşdirilir.
4) Siqnallar və zənginləşdirmə
Şəbəkə/kanal: IP/ASN, proxy/VPN/Tor, rdns, rtt/jitter, SYN-rate, TLS-fingerprint (JA3/JA4), HTTP/2/3 davranış.
Cihaz/brauzer: canvas/audio/WebGL FP (diqqətlə), platforma/SDK, timezone/locale, qətnamə, şriftlər, WebDriver/headless göstəriciləri, mobile attestation (SafetyNet/DeviceCheck, mümkünsə).
Davranış: giriş sürəti, siçan/taç trayektoriyası, ekran ardıcıllığı, dwell-time, cəhd tezliyi, brauzer identifikatorları arasında keçidlər.
Məzmun/sorğu: e-poçt forması/domen, disposable-provayderləri, telefon HLR/və ya nömrə növü, BIN kartları, sank-reyestrlərdə/IBAN hesabı, ad/ünvanların oxşarlığı.
Hesab/tarix: hesabın yaşı, KYC statusu, retenshn, ARPPU, depozitlər/çıxışlar/bonuslar üzrə velocity.
Xarici mənbələr: güzəşt siyahıları (HIBP-oxşar), ödəniş risk siqnalları (PSP), ASN-nüfuz.
5) Həll: qaydalar + ML
5. 1 Qaydalar (determinated)
Velocity: «10 dəqiqə ərzində/24-dən N qeydiyyat», «X hesablarına bir cihaz ilə M giriş», «ardıcıl olaraq K 3DS faylları».
Geo/yurisdiksiya: IP-geo münaqişələri vs ünvan/sənəd, qəfil yer atlama.
Biznes invariantları: məsuliyyətli ödənişlərin limitləri, özünü istismar, sanksiya siyahıları.
5. 2 ML-skorinq (real vaxt)
Yüngül model (GBM/logreg) online işarələr üzərində: 'ip _ risk', 'device _ age', 'account _ age', 'pwd _ fail _ rate', 'bin _ risk', 'velocity _', 'behavioral _'.
ATO və ayrıca - ödənişlər/nəticələr üçün ayrıca model.
Yurisdiksiya/tenant üzrə seqmentasiya (per-bazar eşik kalibrləmə).
5. 3 Qərarın qəbulu
if ip_blacklisted or bad_asn then deny else if rule_severe then challenge(hard)
else if score >= 0. 9 then deny else if 0. 7 <= score < 0. 9 then challenge(soft)
else allow
'challenge' keçid/uğursuzluq faktlarını saxlamaq; dinamik sürtünməni artırmaq/azaltmaq.
6) Velocity və kvotalar (açarlar və pəncərələr)
Ключи: `ip`, `ip/24`, `device_id`, `account_id`, `payment_instrument`, `email_domain`, `bin`.
Pəncərələr: sürüşmə (1m/5m/1h/24h) + ayrı-ayrı «burst «/« sustained ».
Siyasətçilər: isti marşrutlarda «sərt» deny (giriş/depozit), məzmunda yumşaq throttle.
pseudo allow, retry_after = gcra_allow(key="login:ip:"+ip, rate=60/min, burst=30)
if not allow:
return 429, {"Retry-After": retry_after}
7) Challenge və «insanlıq» testi
CAPTCHA/turnstile: как soft-challenge; «təmiz» sessiyaya yüksək əminlikdən sonra təmizləmək.
Proof-of-Work (PoW): API/skriptlər üçün - verilmiş çətinliklə hash hesablamaq; yükün artması ilə dinamik çətinlik.
OTP/SMS/Email/Push: ATO/kritik əməliyyatlar üçün; sui-istifadə etməyin (dəyəri/UX).
WebAuthn/biometrik: cash-out/payout-detalları dəyişdirmək üçün yüksək səviyyədə inam.
Device trust: etibarlı cihaza hesabın bind; yeni cihazlar → challenge.
8) Şluz/proxy inteqrasiya
8. 1 Envoy: ext_authz → Risk API (psevdo)
yaml http_filters:
- name: envoy. filters. http. ext_authz typed_config:
http_service:
server_uri: { uri: http://risk-api:8080, cluster: risk, timeout: 80ms }
authorization_request:
allowed_headers:
patterns:
- exact: "x-tenant"
- exact: "x-device-id"
- exact: "user-agent"
authorization_response:
allowed_upstream_headers:
patterns: [{ exact: "x-risk-score" }, { exact: "x-risk-decision" }]
- name: envoy. filters. http. router
8. 2 NGINX/Lua: yüngül PoW və velocity
nginx lua_shared_dict vel 20m;
access_by_lua_block {
local ip = ngx. var. remote_addr if not gcra_allow("reg:ip:"..ip, 20, 40) then ngx. header["Retry-After"] = 30; return ngx. exit(429)
end
local pow = ngx. req. get_headers()["X-POW"]
if not verify_pow(pow, ngx. var. request_id, 18) then ngx. status = 401; ngx. say('need-pow'); return ngx. exit(401)
end
}
9) Risk API müqaviləsi
Sorğu (zənginləşdirilmiş):json
{
"tenant":"eu-1",
"route":"POST /v1/login",
"subject":{"account_id":"a123","email":"u@d. com"},
"device":{"id":"d-xyz","fp":"...","ja3":"...","headless":false},
"network":{"ip":"203. 0. 113. 10","asn":12345,"country":"DE","rtt_ms":42},
"context":{"fail_5m":3,"pwd_reset_24h":1}
}
Cavab:
json
{ "decision":"challenge", "score":0. 83, "reason":"high_velocity+new_device", "ttl_sec":900, "challenge":"captcha" }
10) Data, Ficks və Modellər
Feature Store (online): Redis/Scylla/KeyDB - sayğaclar/velocity/vaxt işarələri.
Batch/offline: DWH (BigQuery/S3 + Athena) təlim/refit üçün; axın işarələri saxlamaq, chargeback, əl revyu.
Modellər: real vaxt üçün asan (logreg/GBM); ağır (XGBoost/NN) - PGMs/scaling və sonrakı distillə ilə oflayn.
Drift nəzarəti: PSI, AUC/PR, bölgələr/kanallar üzrə astanaların kalibrovkası.
11) Müşahidə və əməliyyat konturu
Metriklər:- `risk_requests_total{route,decision}`
- `risk_score_bucket` (distribution)
- `waf_block_total`, `velocity_block_total`, `challenge_pass_rate`
- `ato_incidents`, `carding_detected`, `cashout_denied`
- biznes metrikası: 'chargeback _ rate', 'bonus _ abuse _ rate', 'false _ positive _ rate'
- Qeydlər (redaktə edilmişdir): 'decision', 'score', açar siqnalları, 'trace _ id', PII/sirləri yoxdur.
- A/B və Shadow: shadow rejimində yeni siyasət (həllərin loqosu), sonra canary (1-5%), SLO/FP ilə autorolback.
- Playbooks: eskalasiya, müvəqqəti sərtləşdirmə, geri dönüş, «virtual yamalar».
12) Gizlilik və uyğunluq
PII-ni minimuma endirin; sabit identifikatorları (məsələn, duz ilə email SHA-256) heş edin.
Regional yurisdiksiyaya hörmət edin (məlumatların lokallaşdırılması, razılıq).
Əl review üçün həllərin şəffaf izahı; yalnız lazım olan və TTL ilə saxlayın.
13) iGaming/Maliyyə Xüsusiyyətləri
Qeydiyyat: disposable e-mail/VoIP, velocity/24, device-ferma → challenge/deny.
Giriş/ATO: yeni cihazlar/geo-jumping → OTP/WebAuthn; password spraying → throttle/deny.
Bonuslar: «çirkli pulların yuyulması yolu» limitləri (depozit → bonus → minimum dövriyyə → çıxış), graph-bağlı analiz (ünvanlar/cihazlar/kartlar).
Ödənişlər/nəticələr: BIN-risk, country-mismatch, PSP siqnalları; yeni alət cashout → yüksək eşik və KYC çekap.
PSP/KYC vebhukları: HMAC + mTLS, dar IP-allow siyahısı, anti-replay ('X-Timestamp', pəncərə ± 5 dəq).
14) Antipattern
Bir universal captcha «hər yerdə və həmişə» → yüksək FP/dönüşüm düşməsi.
davranış/cihaz siqnalları olmadan yalnız rate limit.
«Xam» izlərin və PII-nin saxlanması müddətsizdir.
Yeni siyasətlər üçün shadow-run və canary yoxdur.
Öz validasiyası olmadan xarici «nüfuzlu» etiketlərə tam etibar.
Server yoxlaması olmadan müştəriyə (JS/mobil SDK) qərar vermək.
15) Qaydalar və psevdokod nümunələri
15. 1 Kompozit qayda (real vaxt)
pseudo score = 0 if ip_asn in bad_asn_list then score += 0. 5 if device_age < 1d and route in {login, withdraw} then score += 0. 3 if velocity("login:account", 5m) > 10 then score += 0. 3 if geovelocity(last_login_loc, current_loc) > 800km/h then score += 0. 2 decision = score>=0. 9? "deny": score>=0. 7? "challenge": "allow"
15. 2 Əlaqələr qrafiki (multiakkaunt)
edge(accountA, deviceX)
edge(accountB, deviceX)
edge(accountB, cardY)
edge(accountC, cardY)
Threshold by common nodes → investigation/deny bonus
16) Prod hazırlıq yoxlama siyahısı
- Çox səviyyəli memarlıq: Edge → Risk API → App, hadisələr axını.
- Siqnallar: şəbəkə, cihaz, davranış, məzmun, ödəniş; PII-nin minimuma endirilməsi.
- Velocity/GCRA ip/device/account/payment açarları, sürüşmə pəncərələri.
- Həllər: allow/deny/challenge/throttle; TTL ilə cache həlləri; challenge faktları saxlama.
- Çağırışlar: captcha/PoW/OTP/WebAuthn; dinamik mürəkkəblik.
- Risk API: SLA <100 ms, cache, «minimum təhlükəsiz» rejimdə deqradasiya.
- Müşahidə: risk metrikası, FP/FN, daşbordlar, alertlər; biznes metrikası (chargeback/bonus-abuse).
- Shadow → canary → enforce; eskalasiya və geri qaytarma pleybukları.
- PSP/KYC vebhukları: HMAC + mTLS + anti-replay + allow-list.
- Həssas məlumatlara regional tələblər və TTL.
17) TL; DR
Laylı qorunma qurun: erkən edge filtrələri və çağırışlar, + ML qaydaları ilə mərkəzləşdirilmiş Risk API və rəy üçün hadisələr axını. velocity limitləri, şəbəkə/cihaz/davranış siqnalları, dinamik challenge (captcha/PoW/OTP/WebAuthn) istifadə edin. allow/deny/challenge/throttle qərarları qəbul edin, FP/FN və iş effekti ölçün, shadow/canary vasitəsilə yuvarlanın. Ödəniş/bonus yolları üçün - ayrı-ayrı sərtləşdirilmiş profillər və KYC/AML ilə əlaqə.