Муҳофизати Бот ва зидди қаллобӣ API
1) Чаро ба шумо лозим аст
Ботҳо ва ҳамлагарон ба нуқтаҳои воридшавии афзоиш ва пул ҳамла мекунанд: бақайдгирӣ, воридшавӣ (ATO), амонатҳо/хулосаҳо, механикаи таблиғотӣ, феҳристҳои бозиҳо/коэффисентҳо. Қоидаҳои дастӣ ва маҳдудияти меъёри тоза акнун кофӣ нестанд: ба шумо сигналҳои бисёрсатҳа, баҳодиҳии вақти воқеӣ ва назорати ҳалли (иҷозат додан/рад кардан/мушкил/дроссел) бо фикру мулоҳизаҳо аз рӯйдодҳои корӣ (пардохтҳо, таносуби пардохт, KYC-файлҳо) лозим аст.).
2) Таксономия таҳдид мекунад
Бақайдгирӣ/борбардорӣ: суратҳисобҳои оммавӣ, почтаи электронии яквақта/бонкҳои SIM, хоҷагиҳои дастгоҳ.
ATO (Ҳисоби ҳисоб): қуттиҳои эътимоднок, пошидани парол, дуздии сессия.
Сӯиистифодаи бонус: фармоиши бисёрҷониба, арбитражи гео/юрисдиксия, гузариши худидоракунӣ.
Картинг/қаллобӣ пардохт: санҷиши корт, ҳамёнҳои дуздидашуда, баргардонидан.
Скрапинг/инвентаризатсия: мундариҷа, нархҳо, таносубҳоро босуръат ҷалб мекунад.
АПИ-ДО-и камшиддат: ҳамлаҳои сангпушт, суст-POST, эмулятсияҳои мобилии SDK.
Webhooks/integrations: огоҳиномаҳои қалбакӣ бе HMAC/MTLS, такрорӣ.
3) Меъмории муҳофизат
3. 1 қабат
1. Edge (CDN/WAF/дарвоза): нокомии барвақт (эътибори ASN/Geo/IP), мушкилоти сабук, маҳдудиятҳо, POW.
2. Хатари API (хатари PDP): муҳаррики мутамаркази қоидаҳо/ML; otvet - 'қарор', 'хол', 'сабаб', 'ttl'.
3. Сатҳи барнома: инвариантҳои домейн, мантиқи тиҷорат (маҳдудиятҳо, KYC, AML), баррасиҳои асинхронӣ.
4. Ҷараёни ҳодиса: Kafka/Kinesis → мағозаи хусусият/модел → фикру мулоҳизаҳо аз пардохтҳо/баҳсҳо.
3. 2 Ҳалқаи ҳалли
[Request] → Edge Plugins → (enrich) → Risk API (rules+ML) → Decision:
allow deny throttle challenge(type=captcha sms PoW biometry)
Ҳалли калид (масалан, дастгоҳ × ҳисоб × масир) дар сонияҳои 'ttl' нигоҳ дошта мешавад.
4) Сигналҳо ва ғанисозӣ
Шабака/канал: IP/ASN, прокси/VPN/Tor, rdns, rtt/jitter, SYN-rate, изи ангуштони TLS (JA3/JA4), рафтори HTTP/2/3.
Дастгоҳ/браузер: рони/аудио/Web
Рафтор: суръати вуруд, траекторияи муш/ламс, пайдарпаии экран, вақти корӣ, басомади кӯшишҳо, гузариш байни идентификаторҳои браузер.
Мундариҷа/дархост: шакли почтаи электронӣ/домейн, провайдерҳои якдафъаина, намуди телефон HLR/ё рақам, корти BIN, ҳисоб/IBAN дар қайди санка, шабеҳи ном/суроғаҳои пурра.
Ҳисоб/таърих: синну соли ҳисоб, ҳолати KYC, нигоҳдорӣ, ARPPU, суръат аз рӯи пасандозҳо/бозпас/мукофотпулӣ.
Манбаъҳои беруна: рӯйхати созиш (ба монанди HIBP), сигналҳои хавфи пардохт (PSP), эътибори ASN.
5) Ҳалли: Қоидаҳо + ML
5. 1 Қоидаҳо (муайянкунанда)
Суръат: "Бақайдгирии N бо/24 дар 10 дақиқа", "M вуруд бо як дастгоҳ ба ҳисоби X", "K 3DS-files дар як саф".
Geo/Юрисдиксия: Ихтилофи IP geo vs суроға/ҳуҷҷат, ҷаҳиши ногаҳонии ҷойгиршавӣ.
Инвариантҳои тиҷорат: маҳдудиятҳои пардохтҳои масъулиятнок, худдорӣ, рӯйхати таҳримот.
5. 2 холҳои ML (вақти воқеӣ)
Модели сабук (GBM/logreg) дар хусусиятҳои онлайн: 'ip _ risk', 'дастгоҳ _ age', 'account _ age', 'pwd _ fail _ rate', 'bin _ risk', 'суръат _',' рафтори _'.
Модели алоҳида барои АТО ва алоҳида барои пардохт/баромад.
Сегментатсия аз рӯи юрисдиксия/иҷорагир (калибрченкунии ҳадди ҳар як бозор).
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
Ҳангоми "мушкилот", далелҳои гузариш/нокомиро нигоҳ доред; шиддат/коҳиш додани фриксия динамикӣ.
6) Суръат ва квотаҳо (калидҳо ва тирезаҳо)
Ключи: 'ip', 'ip/24', 'дастгоҳ _ id', 'account _ id', 'pay _ instrument', 'email _ domain', 'bin'.
Windows: sliding (1m/5m/1h/24h) + инфиродӣ "burst "/" устувор ".
Сиёсатмадорон: "сахт" рад кардани хатсайрҳои гарм (воридшавӣ/амонат), дроссели мулоим аз мундариҷа.
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: kak som-challenge; пас аз эътимоди баланд ба ҷаласаи "тоза" хориҷ кунед.
Исботи кор (POW): барои API/скриптҳо - ҳисоб кардани хэш бо мураккабии додашуда; мураккабии динамикӣ ҳангоми афзоиши сарборӣ.
OTP/SMS/Email/Push: барои амалиёти ATO/интиқодӣ; сӯиистифода накунед (арзиш/UX).
Интернет Authn/biometrics: сатҳи баланди эътимод ба тафсилоти пардохт/тағир додани пардохт.
Боварӣ ба дастгоҳ: ҳисобро бо дастгоҳи тасдиқшуда пайваст кунед; дастгоҳҳои нав → мушкилот.
8) Ҳамгироии дарвоза/прокси
8. 1 Фиристанда: ext_authz → Хатари 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: суръати осон ва суръат
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) Шартномаи хавфи 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) Маълумот, хусусиятҳо ва моделҳо
Дӯкони хусусият (онлайн): Redis/Scylla/Key-DB - ҳисобкунакҳо/суръат/вақтсанҷҳо.
Бастаи/офлайн: DWH (BigQuery/S3 + Афина) барои омӯзиш/бозсозӣ; аломатҳои хориҷшавӣ, баргардонидан, баррасиҳои дастиро нигоҳ доред.
Моделҳо: оддӣ барои вақти воқеӣ (logreg/GBM); вазнин (XGB boost/NN) - офлайнӣ бо PGMs/миқёс ва дистилятсияи минбаъда.
Назорати дрифт: PSI, AUC/PR, калибрченкунии ҳудудҳо аз рӯи минтақа/канал.
11) Мушоҳидакорӣ ва гардиши амалиётӣ
Нишондиҳандаҳо:- 'risk _ дархостҳо _ total {масир, қарор}'
- 'risk _ score _ сатил' (тақсимот)
- 'waf _ block _ total', 'суръат _ block _ total', 'challenge _ pass _ rate'
- 'ato _ ҳодисаҳо', 'carding _ detected', 'cashout _ denied'
- андозагирии тиҷорат: 'chargeback _ rate', 'bonus _ abuse _ rate', 'false _ positive _ rate'
- Сабтҳо (таҳриршуда): 'қарор', 'хол', сигналҳои калидӣ, 'trace _ id', ҳеҷ PII/сирри.
- A/B ва Shadow: сиёсати нав дар ҳолати соя (мо қарорҳоро сабт мекунем), баъд канарӣ (1-5%), худкор ба воситаи SLO/FP.
- Китобҳои бозӣ: шиддат, мустаҳкамкунии муваққатӣ, бозгашт, "часпакҳои виртуалӣ".
12) Махфият ва риояи он
PII-ро кам кунед; hash идентификаторҳои устувор (масалан, почтаи электронӣ SHA-256 бо намак).
Эҳтиром ба салоҳияти минтақавӣ (маҳаллисозии маълумот, розигӣ).
Шарҳи шаффофи қарорҳо барои баррасиҳои дастӣ; танҳо он чизеро, ки ба шумо лозим аст ва бо TTL нигоҳ доред.
13) Хусусиятҳои IGaming/Finance
Бақайдгирӣ: филтрҳои якдафъаинаи почтаи электронӣ/Vo
Вуруд/ATO: дастгоҳҳои нав/гео-секунҷа → OTP/Web пошидани парол → дроссель/инкор.
Бонусҳо: маҳдудиятҳо дар "роҳи шустушӯ" (depozit → bonus → minimalnyy oborot → vyvod), таҳлили графикии мансубият (суроғаҳо/дастгоҳҳо/кортҳо).
Пардохтҳо/бозхонд: Хатари BIN, номувофиқатии кишвар, сигналҳои PSP; cashout ба асбоби нав → ҳадди баланд ва санҷиши KYC.
Webhooks PSP/KYC: HMAC + mTLS, рӯйхати танги IP-иҷозат, анти-такрорӣ ('X-Timestamp', тиреза ± 5 дақиқа).
14) Антипаттернҳо
Як captcha универсалӣ "дар ҳама ҷо ва ҳамеша" → тарки баланди FP/табдилдиҳӣ.
Танҳо меъёри бидуни сигналҳои рафтор/дастгоҳ.
Нигоҳдории чопҳои "хом" ва PII номаҳдуд аст.
Барои сиёсати нав сояи давидан ва канарӣ нест.
Эътимоди пурра ба тамғакоғазҳои берунии "обрӯманд" бидуни тасдиқи худ.
Дар бораи муштарӣ (JS/Mobile 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.
- Суръат/GCRA дар ip/дастгоҳ/калидҳои ҳисоб/пардохт, тирезаҳои лағжанда.
- Қарорҳо: иҷозат додан/рад кардан/даъват кардан/дроссель; Кэши ҳалли масъала бо TTL як анбори далелҳои мушкил.
- Мушкилот: captcha/Po мураккабии динамикӣ.
- Хатари API: SLA <100ms, кэш, ба ҳолати "ҳадди аққали бехатар" таназзул ёфтааст.
- Мушоҳида: хатар, FP/FN, панели панелҳо, огоҳиҳо; ченакҳои корӣ (ситонидани пардохт/сӯиистифода аз бонус).
- Соя → канарейка → татбиқ; афзоиш ва дафтарҳои бозикунӣ.
- Webhooks PSP/KYC: HMAC + MTLS + анти-такрорӣ + рӯйхати иҷозат.
- Талаботи минтақавӣ ва TTL оид ба маълумоти ҳассос.
17) TL; ДР
Сохтани муҳофизати қабатӣ: филтрҳо ва мушкилиҳои барвақтӣ, API-и мутамаркази хавф бо қоидаҳои + ML ва ҷараёни рӯйдодҳо барои бозгашт. Маҳдудиятҳои суръат, сигналҳои шабака/дастгоҳ/рафтор, мушкилиҳои динамикӣ (captcha/Po Қабули қарорҳо имкон медиҳад, ки/рад/мушкилот/дросселро андозагирӣ кунед, FP/FN ва таъсири тиҷоратро тавассути соя/канарӣ андозед. Барои роҳҳои пардохт/бонус - профилҳои мустаҳками алоҳида ва пайванд бо KYC/AML.