ข้ามไปยังเนื้อหาหลัก

การจำกัดอัตราการส่ง (Send rate limiting)

Logto มีการจำกัดอัตราการส่งในตัวแบบต่อผู้รับ สำหรับรหัสยืนยันและข้อความอื่น ๆ ที่ส่งออกทางอีเมลและ SMS เพื่อปกป้องผู้ใช้ของคุณและผู้ให้บริการส่งข้อความจากการถูกละเมิด เช่น ผู้โจมตีส่งสแปมรหัสไปยังกล่องจดหมายหรือโทรศัพท์ของเหยื่อ หรือปั๊ม SMS เพื่อเพิ่มค่าใช้จ่ายของคุณ

ขีดจำกัดนี้เป็น ข้อบังคับและอยู่ในระดับระบบ: ใช้กับทุก tenant ไม่ขึ้นกับแผน และ ไม่สามารถปรับแต่งได้โดย tenant ขีดจำกัดนี้แยกจาก:

  • การล็อกเอาต์ตามตัวระบุ และ CAPTCHA ซึ่งจะจำกัด ความพยายามยืนยันตัวตนที่ล้มเหลว ในขณะตรวจสอบ ไม่ใช่การ ส่ง
  • ขีดจำกัดอัตรา API ต่อ tenant ทั่วโลก (รหัสข้อผิดพลาด request.rate_limited) ซึ่งจำกัดปริมาณคำขอโดยรวมของ tenant

วิธีการทำงาน

  • จำกัดต่อผู้รับ: Logto จำกัดจำนวนข้อความที่สามารถส่งไปยังผู้รับเดียวกัน (ที่อยู่อีเมลหรือหมายเลขโทรศัพท์) ภายในช่วงเวลาสั้น ๆ แบบ rolling โดยค่าเริ่มต้น อนุญาตให้ส่งได้สูงสุด 10 ครั้งต่อผู้รับทุก 10 นาที
  • จุดที่ใช้ขีดจำกัดนี้: ทุกเส้นทางการส่งฝั่งเซิร์ฟเวอร์ รวมถึงการส่งรหัสยืนยันผ่าน Experience API และ Account API (ลงชื่อเข้าใช้, สมัคร, รีเซ็ตรหัสผ่าน, MFA, และการผูกตัวระบุ), การส่งรหัสยืนยันผ่าน Management API, การเชิญองค์กรและการส่งซ้ำ, และการส่งรหัสยืนยันผ่าน Account (/me)
  • เมื่อเกินขีดจำกัด: คำขอจะถูกปฏิเสธด้วย HTTP 429 และรหัสข้อผิดพลาด request.message_rate_limited — แตกต่างจากขีดจำกัด tenant ทั่วไป (request.rate_limited) และการล็อกเอาต์ขณะตรวจสอบ (session.verification_blocked_too_many_attempts) เพื่อให้คุณจัดการได้เฉพาะเจาะจงในระบบของคุณ

ติดตามการส่งที่ถูกจำกัดด้วย webhook

เมื่อ ผู้ใช้ปลายทาง ส่งถึงขีดจำกัดต่อผู้รับ Logto จะทริกเกอร์เหตุการณ์ webhook Message.RateLimited webhook event เพื่อให้คุณแจ้งเตือนหรือรับมือกับการละเมิดการส่ง

  • ทริกเกอร์สำหรับ: เฉพาะเส้นทางการส่งรหัสยืนยันของผู้ใช้ปลายทางเท่านั้น — Experience API และ Account API จะ ไม่ ทริกเกอร์สำหรับการส่งโดย first-party หรือผู้ดูแลระบบ (รหัสยืนยันผ่าน Management API, การเชิญองค์กร หรือ /me)
  • Payload: payload ของ webhook จะมี action (เช่น VerificationCodeSend) และ recipient (ที่อยู่อีเมลหรือหมายเลขโทรศัพท์)

กรณีการใช้งานทั่วไป:

  • ส่งการแจ้งเตือนด้านความปลอดภัยให้ทีมของคุณตรวจสอบ
  • ทริกเกอร์ระบบอัตโนมัติต่อต้านการละเมิดสำหรับผู้รับที่ได้รับผลกระทบ

ไปที่ Console > Webhooks เพื่อสมัครรับเหตุการณ์ หรือสร้าง Webhook ผ่าน Management API สำหรับโครงสร้างเหตุการณ์และการตั้งค่ารายละเอียด ดูที่ Webhooks

การระงับการส่งไปยังผู้รับที่ไม่รู้จัก

เพื่อป้องกันการเดาและระบุบัญชี (account enumeration) เมื่อปิดการสมัครสมาชิกด้วยตัวระบุ หากมีการขอรหัสยืนยันสำหรับที่อยู่อีเมลหรือหมายเลขโทรศัพท์ที่ ไม่มีบัญชีใดเป็นเจ้าของ ระบบจะไม่ส่งรหัสนั้นโดยเงียบ ๆ และ API จะตอบกลับเหมือนกับการส่งจริง ผู้โจมตีจึงไม่สามารถใช้การตอบกลับนี้เพื่อดูว่าที่อยู่นั้นลงทะเบียนแล้วหรือไม่ การส่งไปยังผู้ใช้ที่มีอยู่จะไม่ได้รับผลกระทบ ดูเพิ่มเติมที่ ซ่อนการมีอยู่ของบัญชี