การจำกัดอัตราการส่ง (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 จะตอบกลับเหมือนกับการส่งจริง ผู้โจมตีจึงไม่สามารถใช้การตอบกลับเหล่านี้เพื่อดูว่าที่อยู่นั้นลงทะเบียนแล้วหรือไม่ การส่งไปยังผู้ใช้ที่มีอยู่จะไม่ได้รับผลกระทบ ดูเพิ่มเติมที่ ซ่อนการมีอยู่ของบัญชี