ورود به اولوس با شمارهی موبایل و یک کد ششرقمی پنجدقیقهای است، نه با رمز عبور. این تصمیم از مخاطب میآید: پزشک عضو انجمن و دبیرخانهی کنگره سالی دو بار وارد پنل میشوند. رمزی که یک بار ساخته شده و دو سال بعد لازم میشود، در عمل تبدیل میشود به یک چرخهی «فراموشی رمز» — و شمارهی موبایل از قبل هویت همان آدم است.
فرم ورود هرگز نمیگوید این شماره حساب دارد یا نه. برای هر شمارهای کد فرستاده میشود و رد شدن — اگر لازم باشد — بعد از اثبات کد اتفاق میافتد. فرمی که برای یک شماره «کاربری یافت نشد» و برای دیگری «کد ارسال شد» بگوید، فهرست اعضای انجمن را شماره به شماره بیرون میدهد.
خود کد ذخیره نمیشود؛ فقط HMAC آن با کلید نشست در دیتابیس مینشیند. شمارش تلاشهای ناموفق هم اتمیک است — افزایش شمارنده داخل همان کوئری، نه خواندن و بعد نوشتن. بدون این، بیست درخواست موازی هر بیستتا عدد یکسانی میخوانند و محدودیت پنج تلاش عملاً وجود ندارد.
سیاستها ثابت و کوتاهاند: کد ششرقمی، پنج دقیقه اعتبار، پنج تلاش، شصت ثانیه فاصله تا ارسال دوباره، حداکثر پنج کد در ساعت برای هر شماره و سیتا برای هر IP.
کوکی نشست یک مقدار تصادفی است، نه JWT. دلیلش این است که باید بشود نشستی را پس گرفت: لپتاپی که پای میز ثبتنام کنگره جا مانده، یا دسترسی پشتیبانی که وسط تماس لغو شده. یک توکن امضاشده تا لحظهی انقضایش معتبر است و هیچکس نمیتواند جلویش را بگیرد. در دیتابیس هم HMAC کوکی مینشیند، نه خود کوکی.
نشست به هاست صادرکنندهاش گره خورده است. کوکی سایت انجمن روی دامنهی مستقل کنگره کار نمیکند و سرور هم همین را دوباره بررسی میکند. بدون این قید، یک کوکی لو رفته یعنی کل پلتفرم.
و دو انقضا وجود دارد، نه یکی: مهلت بیکاری با هر استفاده جلو میرود، ولی سقف مطلق نشست هرگز. اگر فقط اولی بود، کوکی دزدیدهشدهای که هر روز استفاده میشود هیچوقت تمام نمیشد.
یک نکتهی آخر که در معماری هم پیداست: ارسال کد ورود از دروازهی سهمیه رد میشود و هرگز مسدود نمیگردد. انجمنی که سهمیهی پیامکش تمام شده باید بتواند وارد شود؛ نتوانستنِ ورود یک رویداد مالی نیست، قطعی است.
و یک صراحت لازم: درگاه پیامکی هنوز وصل نشده است. فرستندهی پیامک یک پورت است با آداپتوری که در حالت توسعه پیام را ماسکشده در کنسول چاپ میکند و کد را روی خود فرم نشان میدهد.
- ورود
- امنیت