Saldırı koruması ayarlarının tamamını değiştir
PUT /v1/attack-protection · izin attack-protection:write
Saldırı koruması nesnesinin tamamını değiştirir (application/json). Yazmadığınız bölümler ve alanlar varsayılanlarına döner. If-Match zorunludur: eksikse 428, eski bir ETag ise 412 döner. Aynı nesneyi yeniden yazmak bir şey yazmaz ve ETag aynı kalır. Birkaç alanı değiştirmek için PATCH kullanın.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
If-Match |
başlık | evet | Nesnenin son okunduğu hâldeki ETag değeri. Eksikse 428; eskiyse 412. |
| gövde | nesne | evet | Yapılandırılmış nesne, en fazla 32 KiB. Her bölüm isteğe bağlıdır; bölüm içindeki her alan da isteğe bağlıdır. |
| Alan | Tür | Aralık veya değerler | Varsayılan | Taban |
|---|---|---|---|---|
brute_force.mode |
metin | log, enforce |
enforce |
|
brute_force.max_failures |
tam sayı | 5-100 | 20 | en fazla 100 |
brute_force.window_minutes |
tam sayı | 5-60 | 15 | |
brute_force.lock_minutes |
tam sayı | 5-60 | 15 | en az 5 |
brute_force.notify_user |
mantıksal | true |
||
suspicious_ip_throttling.mode |
metin | log, enforce |
enforce |
|
suspicious_ip_throttling.login_failures_per_ip_per_day |
tam sayı | 10-10000 | 100 | |
suspicious_ip_throttling.signups_per_ip_per_hour |
tam sayı | 1-20 | 20 | en fazla 20 |
suspicious_ip_throttling.allowlist |
metin dizisi | en fazla 100 CIDR öneki; IPv4 için /8'den, IPv6 için /32'den geniş olamaz | [] |
|
credential_stuffing.mode |
metin | log, enforce |
enforce |
|
credential_stuffing.attack_mode_auto |
mantıksal | true |
||
credential_stuffing.attack_mode_duration_minutes |
tam sayı | 15-240 | 30 | |
bot_protection.mode |
metin | off, risk_based, always |
risk_based |
|
bot_protection.provider |
metin | altcha |
altcha |
|
breached_password.on_signup |
metin | block |
block |
block |
breached_password.on_password_change |
metin | block |
block |
block |
breached_password.on_login |
metin | require_reset, notify |
require_reset |
|
breached_password.notify_user |
mantıksal | true |
||
signup_protection.block_disposable_email |
mantıksal | true |
||
signup_protection.block_email_subaddress |
mantıksal | false |
||
signup_protection.max_signups_per_device_30d |
tam sayı | 1-50 | 3 | |
sms_protection.allowed_countries |
metin dizisi | en fazla 250 ISO 3166-1 alpha-2 kodu | [] (plan varsayılanı) |
|
sms_protection.daily_cap |
tam sayı | null | 1-1000000; null plan değeridir |
null |
|
sms_protection.conversion_breaker |
mantıksal | true |
true |
|
risk_policy.mode |
metin | log, enforce (enforce için Startup veya üstü plan gerekir) |
log |
|
risk_policy.challenge_threshold |
tam sayı | 3-8 | 4 | |
risk_policy.block_threshold |
tam sayı | null | 6-12, challenge_threshold değerinden büyük; null kapalıdır |
null |
|
risk_policy.notify_user_on_new_device |
mantıksal | true |
Güvenlik tabanının altındaki bir değer, alanın genel aralığı içinde olsa bile 422 below_security_floor ile reddedilir: taban her ortamı korur ve düşürülemez.
Davranış
- Değişiklik yeni girişlere hemen uygulanır: önbellekteki ayarlar aynı işlemde geçersiz kılınır.
- Denetim kaydı değişen alan adlarını ile önceki ve yeni nesneleri taşır.
Yanıt
200 OK ile Saldırı koruması ayarlarını al sayfasındaki gibi nesne ve yeni ETag değeri.
Hatalar
| HTTP | kod | Ne zaman |
|---|---|---|
| 400 | unknown_field |
Bir bölüm ya da alan nesnenin parçası değil. errors[] işaretçileri listeler. |
| 400 | malformed_request |
Gövde geçerli JSON değil ya da If-Match başlığı hatalı. |
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz ya da iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde attack-protection:write izni yok. |
| 403 | plan_feature_unavailable |
risk_policy.mode enforce ama plan bunu içermiyor; gövde feature ve required_plan alanlarını taşır. |
| 412 | precondition_failed |
Nesne okuduğunuzdan beri değişti. Yeniden okuyup tekrar deneyin. |
| 413 | payload_too_large |
Nesne 32 KiB'den büyük. |
| 422 | validation_failed |
Bir değerin türü yanlış ya da aralık dışında, ya da block_threshold değeri challenge_threshold değerinden büyük değil. errors[] işaretçileri listeler. |
| 422 | below_security_floor |
Bir değer güvenlik tabanının altında. Her errors[] öğesi alanı ve tabanını detail içinde adlandırır. |
| 422 | allowlist_range_too_broad |
Bir izin listesi öneki IPv4 için /8'den, IPv6 için /32'den geniş. |
| 428 | precondition_required |
If-Match eksik. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Birden fazla hata türü varsa yalnızca en ağır olan döner; sıra şöyledir: unknown_field, validation_failed, below_security_floor, allowlist_range_too_broad, plan_feature_unavailable. Yazılan değerler yanıtta asla geri gönderilmez.
Örnek
curl -X PUT https://api.eu.keenauth.com/v1/attack-protection \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H 'If-Match: "3f1c9a0b5d7e2a4c6b8d0e1f2a3b4c5d"' \
-d '{"brute_force": {"max_failures": 10, "lock_minutes": 30}, "bot_protection": {"mode": "always"}}'