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

การจำกัดอัตราการส่ง (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: context ของ hook จะมี action (เช่น VerificationCodeSend) และ recipient (ที่อยู่อีเมลหรือหมายเลขโทรศัพท์)

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

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

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

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

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