Bot Koruması ve dolandırıcılık karşıtı API
1) Neden ihtiyacınız var
Botlar ve saldırganlar, büyüme ve paranın giriş noktalarına saldırır: kayıt, giriş (ATO), para yatırma/sonuç, promosyon mekaniği, oyun/katsayı katalogları. Manuel kurallar ve saf oran sınırı artık yeterli değil: Çok seviyeli sinyallere, gerçek zamanlı puanlamaya ve çözüm kontrolüne (izin ver/inkar et/meydan oku/gaz ver) iş etkinliklerinden (ters ibrazlar, ters ibraz oranı, KYC dosyaları) geri bildirim ile ihtiyacınız var.
2) Tehdit taksonomisi
Kayıt/onboarding: toplu hesaplar, tek kullanımlık e-posta/SIM bankaları, cihaz çiftlikleri.
ATO (Hesap Devralma): kimlik bilgisi doldurma, şifre püskürtme, oturum kaçırma.
Bonus kötüye kullanımı: çoklu rezervasyon, coğrafi/yargı tahkim, kendi kendini dışlama bypass.
Karting/ödeme dolandırıcılığı: kart testi, çalınan cüzdanlar, geri ödemeler.
Kazıma/envanter: agresif olarak içeriği, fiyatları, oranları çeker.
Düşük yoğunluklu API-Do'lar: kaplumbağa saldırıları, yavaş POST, mobil SDK emülasyonları.
Webhook'lar/entegrasyonlar: HMAC/mTLS'siz sahte bildirimler, tekrar oynatma.
3) Koruma mimarisi
3. 1 Katmanlar
1. Kenar (CDN/WAF/ağ geçidi): erken arızalar (ASN/Geo/IP itibarı), ışık zorlukları, sınırlar, PoW.
2. Risk API (Risk PDP): merkezi kural motoru/ML; ответ - 'karar', 'puan', 'akıl','tl '.
3. Uygulama düzeyi: alan değişmezleri, iş mantığı (limitler, KYC, AML), eşzamansız olmayan incelemeler.
4. Olay akışı: Kafka/Kinesis, özellik deposu/modeli, ödemelerden/anlaşmazlıklardan geri bildirim.
3. 2 Çözüm döngüsü
[Request] → Edge Plugins → (enrich) → Risk API (rules+ML) → Decision:
allow deny throttle challenge(type=captcha sms PoW biometry)
Çözüm,'tl 'saniye için anahtarla (örneğin, cihaz × hesap × rota) önbelleğe alınır.
4) Sinyaller ve zenginleştirme
Ağ/kanal: IP/ASN, proxy/VPN/Tor, rdns, rtt/jitter, SYN-rate, TLS parmak izi (JA3/JA4), HTTP/2/3 davranış.
Cihaz/tarayıcı: canvas/audio/WebGL FP (dikkatli), platform/SDK, saat dilimi/yerel ayar, çözünürlük, yazı tipleri, WebDriver/başsız göstergeler, mobil doğrulama (mümkünse SafetyNet/DeviceCheck).
Davranış: giriş hızı, fare/dokunma yörüngeleri, ekran dizisi, bekleme süresi, deneme sıklığı, tarayıcı tanımlayıcıları arasındaki geçişler.
İçerik/talep: form e-posta/etki alanı, tek kullanımlık sağlayıcılar, telefon HLR/veya numara tipi, BIN kartı, sanka kayıtlarında hesap/IBAN, tam isim/adreslerin benzerliği.
Hesap/geçmiş: hesap yaşı, KYC durumu, saklama, ARPPU, para yatırma/çekme/bonuslarla hız.
Dış kaynaklar: uzlaşma listeleri (HIBP benzeri), ödeme riski sinyalleri (PSP), ASN itibarı.
5) Çözüm: Kurallar + ML
5. 1 Kurallar (deterministik)
Hız: "10 dakika içinde/24 ile N kayıtları", "Bir cihazla X hesaplarına M girişleri", "Üst üste K 3DS-files".
Geo/Jurisdiction: IP geo çakışmaları vs adres/belge, ani konum sıçramaları.
İş değişmezleri: sorumlu ödemelerin sınırları, kendini dışlama, yaptırım listeleri.
5. 2 ML puanlama (gerçek zamanlı)
'Ip _ risk', 'device _ age', 'account _ age', 'pwd _ fail _ rate','bin _ risk ',' velocity _', 'davranışsal _'.
ATO için ayrı, ödemeler/çıktılar için ayrı model.
Yetki alanına/kiracıya göre segmentasyon (pazar başına eşik kalibrasyonu).
5. 3 Karar verme
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
'Meydan okuma' olduğunda, pasaj/başarısızlık gerçeklerini saklayın; Sürtünmeyi dinamik olarak arttırır/azaltır.
6) Hız ve kotalar (anahtarlar ve pencereler)
Ключи: 'ip', 'ip/24', 'device _ id', 'account _ id', 'payment _ instrument', 'email _ domain','bin '.
Pencereler: kayar (1m/5m/1h/24h) + bireysel "patlama "/" sürekli ".
Politikacılar: Sıcak rotalarda "sert" inkar (giriş/depozito), içerikte yumuşak gaz.
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) Zorluklar ve "insanlığı" test etmek
CAPTCHA/turnike: как yumuşak meydan okuma; "Temiz'bir oturumda yüksek güvenden sonra çıkarın.
İş Kanıtı (PoW): API/komut dosyaları için - belirli bir karmaşıklığa sahip bir karma hesaplayın; Yük artışı sırasında dinamik karmaşıklık.
OTP/SMS/E-posta/Push: ATO/kritik işlemler için; kötüye kullanmayın (maliyet/UX).
WebAuthn/biyometri: Nakit çıkışı/değişen ödeme detaylarında yüksek düzeyde güven.
Cihaz güveni: hesabı doğrulanmış bir cihaza bağlayın; Yeni cihazlar - meydan okuma.
8) Ağ geçidi/proxy entegrasyonu
8. 1 Elçi: ext_authz - Risk API (sözde)
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: kolay PoW ve hız
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 Sözleşmesi
İstek (zenginleştirilmiş):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}
}
Cevap:
json
{ "decision":"challenge", "score":0. 83, "reason":"high_velocity+new_device", "ttl_sec":900, "challenge":"captcha" }
10) Veriler, özellikler ve modeller
Özellik Mağazası (çevrimiçi): Redis/Scylla/KeyDB - sayaçlar/hız/zaman damgaları.
Toplu/çevrimdışı: Eğitim/yenilemeler için DWH (BigQuery/S3 + Athena); Çıkış işaretleri, ters ibraz, manuel incelemeler.
Modeller: Gerçek zamanlı için basit (logreg/GBM); Ağır (XGBoost/NN) - PGM'ler/ölçeklendirme ve ardından damıtma ile çevrimdışı.
Drift kontrolü: PSI, AUC/PR, eşiklerin bölgeye/kanala göre kalibrasyonu.
11) Gözlemlenebilirlik ve operasyonel devre
Metrikler:- 'risk _ requests _ total {rota, karar}'
- 'risk _ score _ bucket' (dağıtım)
- 'waf _ block _ total', 'velocity _ block _ total', 'challenge _ pass _ rate'
- 'ato _ incidents', 'carding _ detected', 'cashout _ denied'
- İş metrikleri: 'chargeback _ rate', 'bonus _ abuse _ rate', 'false _ positive _ rate'
- Logs (düzenlenmiş): 'decision', 'score', key signals, 'trace _ id', no PII/secrets.
- A/B ve Gölge: gölge modunda yeni bir politika (kararları kaydediyoruz), daha sonra kanarya (%1-5), SLO/FP aracılığıyla otomatik geri alma.
- Playbook'lar: eskalasyon, geçici sıkılaştırma, geri alma,'sanal yamalar ".
12) Gizlilik ve uyumluluk
PII'yi en aza indirin; Karma kararlı tanımlayıcılar (örneğin, tuzla SHA-256 e-posta).
Bölgesel yargı yetkisine saygı gösterin (veri yerelleştirme, onay).
Manuel incelemeler için kararların şeffaf açıklamaları; Sadece ihtiyacınız olanı ve TTL ile saklayın.
13) iGaming/Finansın Özellikleri
Kayıt: tek kullanımlık e-posta/VoIP filtreleri, 24'e göre hız, cihaz çiftliği - meydan okuma/reddetme.
Giriş/ATO: yeni cihazlar/coğrafi sıçramalar - OTP/WebAuthn; Şifre püskürtme - gaz/inkar.
Bonuslar: "Kara para aklama yolu" üzerindeki limitler (depozit, bonus, minimal, yy oborot, vyvod), bağlılığın grafik analizi (adresler/cihazlar/kartlar).
Ödemeler/para çekme: BIN riski, ülke uyumsuzluğu, PSP sinyalleri; Yeni enstrümana nakit çıkışı - yüksek bir eşik ve KYC kontrolü.
Webhooks PSP/KYC: HMAC + mTLS, dar IP-allow-list, anti-replay ('X-Timestamp', pencere ± 5 dakika).
14) Antipatterns
Bir evrensel captcha'her yerde ve her zaman "- yüksek bir FP/dönüşüm düşüşü.
Davranışsal/cihaz sinyalleri olmadan sadece hız sınırı.
"Ham" baskıların ve PII'nin depolanması sınırsızdır.
Yeni politikalar için gölge koşusu ve kanarya yok.
Kendi doğrulaması olmadan harici "itibar" etiketlerine tam güven.
Sunucu doğrulaması olmadan istemci (JS/Mobile SDK) üzerinde karar verin.
15) Kural Örnekleri ve Pseudocode
15. 1 Kompozit kural (gerçek zamanlı)
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 İlişki grafiği (çoklu hesap)
edge(accountA, deviceX)
edge(accountB, deviceX)
edge(accountB, cardY)
edge(accountC, cardY)
Threshold by common nodes → investigation/deny bonus
16) Prod Hazırlık Kontrol Listesi
- Çok seviyeli mimari: Kenar> Risk API> Uygulama, olay akışı.
- Sinyaller: ağ, cihaz, davranış, içerik, ödeme; PII minimizasyonu.
- ip/cihaz/hesap/ödeme anahtarlarında hız/GCRA, sürgülü pencereler.
- Çözümler: izin ver/inkar et/meydan oku/gaz ver; TTL ile çözüm önbelleği, meydan okuma gerçekleri deposu.
- Zorluklar: Captcha/PoW/OTP/WebAuthn; dinamik karmaşıklık.
- Risk API: SLA <100ms, önbellek, "minimum güvenli" moda düşürüldü.
- Gözlenebilirlik: risk, FP/FN, gösterge panoları, uyarılar; İş metrikleri (ters ibraz/bonus kötüye kullanımı).
- Gölge - kanarya - zorlamak; Eskalasyon ve geri alma oyun kitapları.
- Webhooks PSP/KYC: HMAC + mTLS + anti-replay + allow-list.
- Bölgesel gereksinimler ve hassas verilerde TTL.
17) TL; DR
Katmanlı koruma oluşturun: Erken kenar filtreleri ve zorlukları, + ML kurallarına sahip merkezi Risk API'si ve geri bildirim için olay akışı. Hız sınırlarını, ağ/cihaz/davranış sinyallerini, dinamik zorlukları (captcha/PoW/OTP/WebAuthn) kullanın. Kararlar verin, izin verin/reddedin/meydan okuyun/gaz verin, FP/FN ve iş etkisini ölçün, gölge/kanarya boyunca yuvarlayın. Ödeme/bonus yolları için - ayrı sıkılaştırılmış profiller ve KYC/AML ile bir bağlantı.