کجا refresh و access توکن را در فرانت ذخیره کنیم!؟

با درود خدمت دوستان.
فرض کنید API ما روی سرور دیگری هست و قرار هست یوزر و پسورد را به آن ارسال کنیم و برای ما دو jwt توکن ارسال کند

  • access توکن با زمان انقضای یک ساعته

  • refresh توکن با زمان انقضای 14 روزه

حال این دو مورد بالا را باید در کجا ذخیره کنیم. اکسز توکن با بسته شدن تب یا مروگر پاک بشه مشکلی نداره ولی ریفرش توکن نیازمند این هست که ۱۴ روز توکن را داشته باشید.
خیلی مطالب خوندم مثلا در لوکال استوریج نزارید نمی دونم انجیکشن می شه و … ولی اینکه راه مناسبش چی هست و کجا ذخیره بشه رو دقیقا متوجه نشدم

فرانت و بخش بکند در دو سرور مجزا قرار دارند و امکان ساخت سشن با بکند نیست

پیشاپیش تشکر از شما

شهریار جان سوالی که مطرح کردی از اون سوالاتی هست که همیشه بین علما اختلاف داشته.

هر دو روش کوکی و لوکال و سشن استوریج امن نیستند چرا که کاربر به طرق مختلف می‌تونه بهشون دسترسی داشته باشه.

بشخصه یک راه حل به ذهنم می‌رسید که اونم چون گفتی با بکند نمی‌تونی سشن بسازی، بدرد نمیخوره.

ذخیره توکن در کوکی؛ بطوری که توکن بصورت secure و httpOnly ساخته بشه و این عمل هم توسط سرور انجام شده و روی مرورگر کاربر ذخیره بشه.

2 پسندیده

درود مجدد و ممنونم بخاطر پیامتون

راه آخر فکر کنم مثلا در مواردی مثل nextjs بشه پیاده کرد در قسمت api شون ولی نمی تونم آیا بعد از این کار هنوز روی مواردی مثل گیت هاب page و کلودفلر page کار می کنند یا نیاز هست روی سرور بیاد و کانفیگ خاصی بشه؟!

اینکه ۱۴ روز باید ریفرش توکن بمونه هم خودش داستان هست

در کل در js مشکل حل نمی شه فقط یکی راه جدید رو معرفی می کنه که کار با مشکل راحتر می شه و چندتا مشکل جدید دیگه رو می شه :((

1 پسندیده

وقتی قراره روی مرورگر ذخیره بشه حالا چه توی localstorage چه توی indexeddb به هر حال میتونه توسط کاربر ویرایش بشه و کاربر بهش دسترسی داره. در نتیجه این سوال که چطور توی مرورگر ذخیره کنم تا کاربر نتونه بهش دسترسی داشته باشه اصلا سوال اشتباهی هست بنظرم. البته یک گزینه هست و اون رمز نگاری با یک کلیدی هست که فقط سرور اون رو داره ولی بازم کاربر ممکنه brute force کنه.

و یک سوال که برام پیش اومده اینه که اصلا چرا کاربر نباید دسترسی داشته باشه

1 پسندیده

درود خدمت شما.
فکر کنم متن بنده رو سریع خوندید. بنده پرسیدم بهترین جای امنی که می شه توکن رو نگهداری کرد کجاست!! توکن کاربر هست و خودش دسترسی داشته باشه یک چیز معمولی هست اصلا توکن برای کاربر درست می شه. بیشتر بخاطر موارد امنیتیش از جمله xss و این داستانا پرسیدم!

نگفتم کاربر نباید دسترسی داشته باشه !! به هر صورت توکن به دست هکر بیفته خوب دسترسی همون کاربر رو خواهد داشت

آها ببخشید.
پس در این صورت بنظرم indexeddb بهترین جا باشه تا جایی که من میدونم

2 پسندیده