Mobin Mazini

Mobin Mazini

.3هفته

@mobin

منطق لاگین موندن توی سایتا چیه؟

خب خب سلام، از اونجایی که اولین پستم هستش داخل اینجا، خواستم با یه مطلب توپ بیام


شاید براتون سوال باشه که وقتی لاگین میکنی اکثر سایتا، چطوری ممکنه که بدون به خطر افتادن امنیت، شما لاگین میمونی

خب من فرض میگیرم که شما یه اطلاعاتی درمورد ریکوست ها و شیوه ارسال و دریافتشون و پردازششون میدونید و از ادامه ی ماجرا براتون میگم، ولی اگه اون هم اطلاع ندارید یا حتی حوصله ندارید متن بخونید، داخل چنل تلگرامم از 0 تا 100 رو توضیح دادم که لینکش رو آخر پست میزارم. (1)

ببینید منطق ساده ای داره، شما برای ارتباط و وصل کردن فرانت به بک باید به بک ریکوست بفرستید و از بک تو فرانت ریسپانس بگیرید، و خب هر ریکوست از Header استفاده میکنه
داخل تگ هدر مقدار های مختلفی ممکنه وجود داشته باشه که اینجا ما با تگ Authenticate کار داریم، معمولا داخلش یه توکن هست که اطلاعات اکانتی که داره باهاش ریکوست میره رو به هر نحوی ذخیره کرده و داره میفرسته، که هر توکن معمولا یه تایمی برای Expire شدن داره و قابل تنظیمه و تا وقتی اون توکن Valid باشه، ریکوست ها میره و بکند اکانت مارو میشناسه و چیزی که میخوایم رو برمیگردونه، ولی وقتی که Expire میشه، دیگه بکند نمیفهمه که این توکن برای چیه و میگه Valid نیست و یوزر رو لاگ اوت میکنه

خب ببینید اینجا اگه ما فقط یه توکن داشته باشیم که مثلا 7 روز تایم داشته باشه و فقط با همون توکن ریکوست بفرستیم، اگه ریکوستی این وسط لیک بشه یا شنود بشه از یه کاربر، هکر میتونه با اون توکن به مدت 7 روز ریکوست بفرسته و هرکاری میخواد با اکانت شخص قربانی بکنه!
این خییلی بده.

پس ما بجای اینکه یه توکن با تایم طولانی داشته باشیم، میایم و دوتا توکن میسازیم
اسم یکیشو میزاریم Access Token و اسم دیگری رو Refresh Token و هردوتارو تو کوکی یا سشن استوریج ذخیره میکنیم.

اکسز توکن دقیقا مثل توکن اصلیمونه که بالا داشتیم همه کار میشه باهاش کرد ولی مثلا فقط 15 دقیقه تایم داره!
- سوال : اگه 15 دقیقه تموم بشه یوزر لاگ اوت میکنه؟
نه دیگه :)، این دفعه ما زرنگیم! رفرش توکن یه توکنیه با تایم فریم بالا! مثلا 7 روز یا 10 روز(نرمالشه)، با رفرش فقطططط میشه اکسز توکن جدید ساخت! ینی ما هر 15 دقیقه توکنی که ممکنه لو رفته باشه رو Expire میکنیم و با رفرش توکن اینو جدیدش میکنیم و کل این پروسه به میلی ثانیه هم نمیرسه و کاربر نمیفهمه، اما ما به هکر یه زکی خیلی گنده گفتیم!

حالا اگه رفرش توکن تایمش تموم بشه، یوزر لاگ اوت میشه و مجدد مجبوره لاگین کنه :)

تادااا، من با همین متن نسبتا طولانی، کل JWT Authentication رو توضیح دادم
لذت ببرید،
راستی، لینکه ویسی که میگفتم اینهاش:

(1) https://t.me/immobinium/275