💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ عرفان
ذخیره کردن OTP در دیتابیس اشتباه است!
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۳ مرداد ۱۴۰۳

چرا کد OTP رو توی دیتابیس ذخیره کردن؟ این کار خیلی اشتباهه! سرور رو بشدت درگیر میکنه و باعث میشه مدام رکوردهای بیخود توی دیتابیس ایجاد بشه. مکانیزمی که برای OTP استفاده میشه معمولا استفاده کردن از cache یا memory storage هست که transaction‌های سمت سرور زیاد نشه. وقتی تعداد کاربران سایت زیاد بشه این کار میتونه بشدت باعث کندی و اختلال توی سرور بشه

سلام،

اینکه بگیم "خیلی اشتباهه" یه جورایی مطلقه و همیشه هم درست نیست. همه‌ چیز به مقیاس (scale)، ترافیک سایت یا اپلیکیشن و هدف پروژه بستگی داره.

روش‌های مختلفی برای پیاده‌سازی ذخیره‌سازی OTP وجود داره و هر کدوم مزایا و معایب خودشون رو دارن. مثلاً ذخیره کردن OTP توی دیتابیس شاید توی پروژه‌هایی که نیاز به پیگیری دقیق رفتار کاربر و لاگ‌گذاری دارن، بهتر باشه. یا روش‌هایی مثل stateless که توی اون‌ها کد OTP توی سرور ذخیره نمیشه و طبق الگوریتم‌هایی مثل TOTP یا HOTP هر بار به صورت داینامیک تولید میشه هم وجود داره. یا استفاده از session-based storage که در اون کد OTP توو session کاربر ذخیره میشه و با هر درخواست تایید میشه. این روش میتونه با tokenization پیاده بشه و به جای ذخیره مستقیم کد OTP، یه توکن JWT روی session کاربر ساخته بشه که امنیت بیشتری رو داشته باشه. یا طبق گفته شما ذخیره‌سازی موقت در حافظه‌هایی مثل Redis و Memcached.

ضمناً بعضی از سایت‌ها و اپلیکیشن‌‌ها هم از روش‌های ترکیبی استفاده میکنن. یعنی هم OTP رو به صورت موقت توی حافظه ذخیره میکنن و هم در شرایط خاص، مثل وقتی که نیاز به پیگیری و امنیت بالاتری هست، اونو توی دیتابیس ثبت میکنن. اینطوری میتونن هم از سرعت و کارایی حافظه موقت استفاده کنن و هم از امنیت و قابلیت پیگیری دیتابیس بهره‌ ببرن.

محسن موحد ۲۴ مرداد ۱۴۰۳، ۰۸:۵۰