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ış

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"}}'