Bot Protection және антифрод API
1) Бұл не үшін қажет
Боттар мен қаскүнемдер өсу мен ақшаның кіру нүктелеріне шабуыл жасайды: тіркеу, логин (АТО), депозиттер/қорытындылар, промо-механика, ойындар/коэффициенттер каталогтары. Қол ережелері мен таза rate limit жеткіліксіз: көп деңгейлі сигналдар, нақты уақыттағы скоринг және бизнес-оқиғалардан (чарджбэки, chargeback-ratio, KYC-фейл) кері байланысы бар шешімді (allow/deny/challenge/throttle) бақылау қажет.
2) Қатерлердің таксономиясы
Тіркеу/онбординг: бұқаралық аккаунттар, бір реттік e-mail/сим-банктер, девайс фермалары.
ATO (Account Takeover): credential stuffing, password spraying, session hijack.
Бонус-абьюз: мультиаккаутинг, гео/юрисдикция төрелігі, self-exclusion тексеріп шығу.
Картинг/төлем фроды: карта тесті, ұрланған әмияндар, қаражатты қайтару.
Скрейпинг/мүкәммал: контентті, бағаларды, коэффициенттерді агрессивті тарту.
API-DoS төмен қарқындылығы: тасбақалар шабуылдары, slow-POST, мобильді SDK эмуляциялары.
Вебхактар/интеграциялар: HMAC/mTLS, replay хабарламаларын қолдан жасау.
3) Қорғау архитектурасы
3. 1 қабаттар
1. Edge (CDN/WAF/шлюз): ерте істен шығулар (ASN/Geo/IP-беделі), жеңіл челлендждер, лимиттер, PoW.
2. Risk API (PDP тәуекел бойынша): орталықтандырылған ережелер қозғалтқышы/ML; ответ — `decision`, `score`, `reason`, `ttl`.
3. App-деңгей: домендік инварианттар, бизнес-логика (лимиттер, KYC, AML), асинхронды ревю.
4. Оқиғалар ағыны: Kafka/Kinesis → feature store/модель → төлемдерден/пікірталастардан кері байланыс.
3. 2 Шешім сұлбасы
[Request] → Edge Plugins → (enrich) → Risk API (rules+ML) → Decision:
allow deny throttle challenge(type=captcha sms PoW biometry)
Шешімді 'ttl' секундқа (мысалы, device × account × route) кэштеу.
4) Сигналдар және байыту
Желі/арна: IP/ASN, прокси/VPN/Tor, rdns, rtt/jitter, SYN-rate, TLS-фингерпринт (JA3/JA4), HTTP/2/3 мінез-құлық.
Девайс/браузер: canvas/audio/WebGL FP (ұқыпты), платформа/SDK, timezone/locale, рұқсат, қаріптер, WebDriver/headless индикаторлары, mobile attestation (SafetyNet/DeviceCheck, мүмкіндігінше).
Мінез-құлық: енгізу жылдамдығы, тышқан/тач траекториясы, экрандар реттілігі, dwell-time, әрекеттер жиілігі, браузерлік идентификаторлар арасындағы ауысулар.
Контент/сұрау салу: e-mail/домен нысаны, disposable-провайдерлер, phone HLR/немесе нөмір түрі, BIN картасы, санк-тізілімдегі шот/IBAN, ТАӘ/мекенжайлардың ұқсастығы.
Есеп/тарихы: есеп жасы, KYC-мәртебесі, ретеншн, ARPPU, депозиттер/қорытындылар/бонустар бойынша velocity.
Сыртқы көздер: компрометация тізімдері (HIBP-ұқсас), төлемдік тәуекел сигналдары (PSP), ASN-беделі.
5) Шешім: ережелер + ML
5. 1 Ереже (детерминирленген)
Velocity: «N тіркеу с/24 10 минут ішінде», «M логинов с одним девайсом к X аккаунтам», «K 3DS-фейлов подряд».
Гео/юрисдикция: IP-гео қайшылықтары vs мекенжайы/құжаты, кенеттен тұрған жерінің секіруі.
Бизнес-инварианттар: жауапты төлемдердің лимиттері, self-exclusion, санкциялық тізімдер.
5. 2 ML-скоринг (нақты уақыт)
Онлайн-белгілердегі жеңіл модель (GBM/логрег): 'ip _ risk', 'device _ age', 'account _ age', 'pwd _ fail _ rate', 'bin _ risk', 'velocity _', 'behavioral _'.
АТО үшін жеке және төлемдер/қорытындылар үшін жеке модель.
Юрисдикция/теңге бойынша сегменттеу (шектерді калибрлеу нарығы).
5. 3 Шешім қабылдау
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' кезінде өту/істен шығу фактілерін сақтау; үйкелісті серпінді түрде күшейту/азайту.
6) Velocity және квоталар (кілттер мен терезелер)
Ключи: `ip`, `ip/24`, `device_id`, `account_id`, `payment_instrument`, `email_domain`, `bin`.
Терезелер: жылжымалы (1 м/5 м/1 сағ/24 сағ) + жеке «burst «/« sustained ».
Саясаткерлер: ыстық маршруттарда «қатты» deny (логин/депозит), контентте жұмсақ 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) Челленджи және «адамгершілікті» тексеру
CAPTCHA/turnstile: как soft-challenge; «таза» сессияға жоғары сенімділіктен кейін жинауға міндетті.
Proof-of-Work (PoW): API/скрипттер үшін - берілген қиындықпен хэшті есептеу; жүктеменің өсуі кезіндегі динамикалық күрделілік.
OTP/SMS/Email/Push: АТО/күрделі операциялар үшін; теріс пайдаланбау (құны/UX).
WebAuthn/биометрия: жоғары сенімділік деңгейі cash-out/payout-бөлшектерін өзгерту.
Device trust: тексерілген құрылғыға тіркелгі bind; Жаңа құрылғылар → challenge.
8) Шлюз/прокси интеграциясы
8. 1 Envoy: ext_authz → Risk API (жалған)
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: жеңіл PoW және 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 келісімшарты
Сұрау салу (байытылған):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}
}
Жауап:
json
{ "decision":"challenge", "score":0. 83, "reason":"high_velocity+new_device", "ttl_sec":900, "challenge":"captcha" }
10) Деректер, фичтер және модельдер
Feature Store (онлайн): Redis/Scylla/KeyDB - есептегіштер/velocity/уақытша белгілер.
Batch/офлайн: Оқыту/рефиттер үшін DWH (BigQuery/S3 + Athena); әкету белгілерін, chargeback, қол ревін сақтаңыз.
Модельдер: real-time үшін қарапайым (логрег/GBM); ауыр (XGBoost/NN) - PGMs/масштабтау және кейіннен дистилляциялау офлайн.
Дрифтті бақылау: PSI, AUC/PR, өңірлер/арналар бойынша табалдырықтарды калибрлеу.
11) Бақылау және операциялық контур
Өлшемдері:- `risk_requests_total{route,decision}`
- `risk_score_bucket` (distribution)
- `waf_block_total`, `velocity_block_total`, `challenge_pass_rate`
- `ato_incidents`, `carding_detected`, `cashout_denied`
- бизнес-метрика: 'chargeback _ rate', 'bonus _ abuse _ rate', 'false _ positive _ rate'
- Логтар (өңделген): 'decision', 'score', негізгі сигналдар, 'trace _ id', PII/құпиясыз.
- A/B және Shadow: shadow режиміндегі жаңа саясат (шешімдерді логикалаймыз), содан кейін canary (1-5%), SLO/FP бойынша авторолбек.
- Playbooks: эскалация, уақытша қатайту, кері шегіну, «виртуалды патч».
12) Жекешелiк және сәйкестiк
PII-ні барынша азайтыңыз; тұрақты идентификаторларды (мысалы, email SHA-256 тұзбен) хэштеңіз.
Өңірлік юрисдикцияны құрметтеңіз (деректерді оқшаулау, келісім).
Қолмен реву үшін шешімдерді ашық түсіндіру; тек қажетті және TTL сақтаңыз.
13) iGaming/Қаржы ерекшелігі
Тіркеу: disposable e-mail/VoIP, velocity/24, девайс-ферма → challenge/deny.
Логин/АТО: жаңа құрылғылар/гео-секірістер → OTP/WebAuthn; password spraying → throttle/deny.
Бонустар: «жылыстату жолына» арналған лимиттер (депозит → бонус → ең аз айналым → шығару), аффилиирленуді graph-талдау (мекенжайлар/девайстар/карталар).
Төлемдер/қорытындылар: BIN-тәуекел, country-mismatch, PSP-сигналдар; жаңа құралға cashout → жоғары табалдырық және чекап KYC.
PSP/KYC: HMAC + mTLS, тар IP-allow-парақ, anti-replay ('X-Timestamp', терезе ± 5 мин).
14) Антипаттерндер
Бір әмбебап captcha «барлық жерде және әрқашан» → жоғары FP/конверсия құлдырауы.
Тек мінез-құлық/девайс сигналдарынсыз rate limit.
«Шикі» таңбалар мен PII мерзімсіз сақталады.
Жаңа саясаттарға арналған shadow-прогонның және canary-дің болмауы.
Өзіндік валидациясыз сыртқы «беделді» белгілерге толық сенім.
Серверлік тексерусіз клиентке (JS/мобильді SDK) шешім қабылдау.
15) Ережелер мен жалған құжаттардың үлгілері
15. 1 Композиттік ереже (реал-тайм)
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 Байланыстар бағаны (мультиаккаунт)
edge(accountA, deviceX)
edge(accountB, deviceX)
edge(accountB, cardY)
edge(accountC, cardY)
Threshold by common nodes → investigation/deny bonus
16) Prod-дайындық чек-парағы
- Көп деңгейлі архитектура: Edge → Risk API → App, оқиғалар ағыны.
- Сигналдар: желі, девайс, мінез-құлық, контент, төлем; PII азайту.
- ip/device/account/payment кілттеріндегі Velocity/GCRA, жылжымалы терезелер.
- Шешімдер: allow/deny/challenge/throttle; TTL кэш шешімдері; челленджер фактілерінің қоймасы.
- Шақырулар: captcha/PoW/OTP/WebAuthn; динамикалық күрделілік.
- Risk API: SLA <100 мс, кэш, «минималды қауіпсіз» режимге деградация.
- Байқалуы: тәуекел метрикасы, FP/FN, дашбордтар, алерта; бизнес-метрика (chargeback/bonus-abuse).
- Shadow → canary → enforce; эскалация және қайтару плейбуктері.
- PSP/KYC: HMAC + mTLS + anti-replay + allow-list.
- Өңірлік талаптар және сезімтал деректерге арналған TTL.
17) TL; DR
Қабатты қорғауды жасаңыз: ерте edge-сүзгілер мен челлендждер, + ML ережелерімен орталықтандырылған Risk API және кері байланыс үшін оқиғалар ағыны. velocity-лимиттерін, желі/девайс/мінез-құлық сигналдарын, динамикалық challenge (captcha/PoW/OTP/WebAuthn) пайдаланыңыз. allow/deny/challenge/throttle шешімдерін қабылдаңыз, FP/FN және бизнес әсерін өлшеңіз, shadow/canary арқылы жылжытыңыз. Төлем/бонустық жолдар үшін - жеке қатаңдатылған бейіндер және KYC/AML байланысы.