امنیت و کنترل سوءاستفاده OTP
OTP یک مرز احراز هویت پرریسک است. کنترلهای این صفحه جای WAF، Monitoring یا محدودیت Provider را نمیگیرند و پیش از Production به Security Review نیاز دارند.
تولید و نگهداری OTP
- کد دقیقا شش رقم از
000000تا999999است. - تولید با
crypto/randو Sampling بدون Bias انجام میشود. - Database فقط HMAC-SHA256 دامنهبندیشده با Pepper حداقل 32 Byte را نگه میدارد.
- Salt جدا لازم نیست، چون Challenge ID یکتا و Domain Separation وارد HMAC میشوند؛ Pepper محرمانه مقاومت در برابر حدس آفلاین را فراهم میکند.
- مقایسه Verification آینده باید Constant-time باشد.
- OTP، Pepper، Mobile کامل و Headerهای امنیتی نباید در Log عمومی قرار گیرند.
عدم افشای Account
درخواست Mobile ثبتنشده همان Status و Shape درخواست Mobile موجود را دریافت میکند. Account فقط پس از Verification موفق و در Transaction کنترلشده ایجاد یا بازیابی میشود. تفاوت قابل مشاهده در Timing، Error و Delivery باید تا حد عملی کمینه شود.
Limitهای فعلی
| Scope | بازه کوتاه | بازه روزانه |
|---|---|---|
| Mobile | 5 در 1 ساعت | 10 در 24 ساعت |
| Device | 10 در 1 ساعت | 20 در 24 ساعت |
| IP | 30 در 10 دقیقه | 200 در 24 ساعت |
| Service | 300 در 1 دقیقه | — |
این مقادیر Baseline محافظهکارانه هستند، نه عدد نهایی Production. افزایش یا کاهش آنها فقط با Metric نرخ موفقیت، Abuse، هزینه SMS، NAT Carrier و False Positive انجام میشود. Mobile Limit پایینتر از IP است تا کاربران متعدد پشت NAT اپراتور بدون دلیل مسدود نشوند.
Atomicity
Repository با Advisory Lock روی Scopeهای موثر از Race میان Requestهای همزمان جلوگیری میکند. بررسی Limit و ثبت Challenge در یک Transaction است؛ Rate Limit فقط در Memory Process نگهداری نمیشود.
Client IP
IP فقط از Headerهای Proxy مورد اعتماد و زنجیره تاییدشده استخراج میشود. اعتماد مستقیم به X-Forwarded-For عمومی امکان دورزدن Limit را ایجاد میکند. مقدار IP پیش از ذخیره با HMAC جداگانه Hash میشود.
کنترلهای لازم پیش از Production
- MelliPayamak Adapter با Timeout، Error Classification و Outbox؛
- Alert نرخ
429،503، Delivery Failure و الگوی حمله؛ - Rotation Pepper با راهبرد سازگار با Challengeهای فعال؛
- سیاست Retention و حذف داده؛
- سقف تلاش Verification و Lock موقت Challenge؛
- Refresh Token Rotation، Reuse Detection و Revocation؛
- تست Load، Race، Enumeration و Header Spoofing.