From 98bf05fcbd95c43eb33f887a77808a2ef1b2e70f Mon Sep 17 00:00:00 2001 From: Zareian Date: Sun, 11 Oct 2026 22:11:08 +0330 Subject: [PATCH] OTP code requests per IP 20 -> 100/hour so a class on one school Wi-Fi can all log in SMS cost stays bounded by the per-phone (10/day) and system-wide daily caps. Co-Authored-By: Claude Opus 5.5 --- config/settings.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/settings.py b/config/settings.py index 0bfe88e..2782091 100644 --- a/config/settings.py +++ b/config/settings.py @@ -551,7 +551,10 @@ REST_FRAMEWORK = { # مدرسه یا شبکه‌ی یک دفتر، ده‌ها نفر یک IP دارند و با ۵ در ساعت فقط ۵ نفر # می‌توانستند وارد شوند. حفاظِ اصلی per-phone و per-code است (پایین‌تر و # در دیتابیس)؛ این‌ها فقط جلوی یک ماشینِ تنها را می‌گیرند. - 'otp_request': os.environ.get('OTP_REQUEST_IP_RATE', '20/hour'), + # ۲۰ تا ۲۰۲۶-۱۰-۱۱ (تصمیمِ مالک): کلاسی که روی یک وای‌فای با هم وارد می‌شود سقف را پر می‌کرد. ۱۰۰ در + # ساعت از یک IP هنوز جلوی یک ماشینِ تنها را می‌گیرد؛ هزینه‌ی پیامک را سقفِ هر شماره (۱۰ در روز) و سقفِ + # روزانه‌ی کلِ سامانه (OTP_SMS_GLOBAL_DAILY_MAX) می‌بندند. + 'otp_request': os.environ.get('OTP_REQUEST_IP_RATE', '100/hour'), # ۳۰ تا ۲۰۲۶-۱۰-۱۱: یک کلاسِ سی‌نفره روی وای‌فایِ مدرسه با چند غلطِ تایپی سقف را پر می‌کرد. حدسِ کد # را سقفِ هر کد (OTP_MAX_FAILED_ATTEMPTS=۵، در دیتابیس) و هر شماره می‌بندد، نه این. 'otp_login': os.environ.get('OTP_LOGIN_IP_RATE', '300/hour'),