مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

بهینه ترین روش ایجاد جدولی برای سشن یکبار مصرف (یا اصطلاحا Token)

یکشنبه, 05 خرداد 1398 14:13

بهینه ترین روش ایجاد جدولی برای سشن یکبار مصرف (یا اصطلاحا Token)

سلام دنبال یه روش بهینه و پر سرعت هستم که بجای اینکه یه آیدی ثابت از کاربر داخل سشن ذخیره کنم یه عدد رندوم ذخیره کنم و هربار که کاربر لاگین میکنه این عدد به روز بشه و هربار خروج میکنه پاک کنه و به هیچ شکلی نتونه بعد خروج با سشن قبلی لاگین کنه ( یا اصطلاحا هک کنه )

یکشنبه, 05 خرداد 1398 17:25

سلام

ما که آخر نفهمیدیم منظور شما از session چی هستش!

اگه میخوای توی اطلاعات token دستکاری کنی که غیر ممکنه.

اگه هم داخل token یه sessionId نگهداری میکنی که خب خیلی راحت اطلاعات session رو با هر بار درخواست کاربر به روز میکنی.

بهتره داخل دیتابیس یه جدول اضافه کنی و داخلش یه ProcessId باشه و یه bit که نشون بده این عملیات انجام شده یا نه. بعد هر بار که token میسازی یه Process با bit false ایجاد میکنی و token رو میدی به کاربر. کاربر که درخواست داد با ProcessId یه Find میزنی روی اون جدول و مقدار bit رو میخونی که اگه true باشه کاربر اجازه عملیات رو نداره (یعنی عملیات یکبار صورت گرفته).

حالا برای سریعتر شدنت این منطق میتونی process ها رو داخل رم cache کنی و هر بار به دیتابیس نری. اما حتما باید داخل دیتابیس هم ثبتش کنی تا اگه رم به مشکل خورد یا سرور ریست شد cache رو از داخل دیتابیس پر کنی. هر یه مدت یه بار هم کلا invalid کن cache رو. (این یه مدت یه بار برابر میشه با زمان انقضای token) مثلا اگه خیلی عملیات حساس باشه باید انقضای token رو ۶۰ ثانیه‌ در نظر بگیری.

موفق باشی.

یکشنبه, 05 خرداد 1398 20:01

شما لطف کردی تو پست قبلی جواب دادی پست جدید گذاشتم با عنوان جدید که به راه حل برسم

یکبارم گفتم من وب فرمه برنامم و خیلی ئاضح هست توکن ندارم و اون توکن برای mvc هستش این رو به وضوح درجریانم و میدونم

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

میخوام جلوی این موضوع رو بگیرم

روشی هم که اجرا کردم یه حدول گذاشتم یه آیدی رندوم به نام اون کاربر صادر میکنه و اون رو چک میکنه و کاربر logout کنه پاکش میکنه و تمام الان دنبال راه بهینم تا پرفرمنس بالا بره

دوشنبه, 06 خرداد 1398 10:00

از Forms Authentication استفاده کردی این مشکل رو داری ؟

دوشنبه, 06 خرداد 1398 19:52

کلا تاحالا از کلاس های آماده asp استفاده نکردم برای این کار و ترجیح هم میدم اینکارو نکنم

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید