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

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

کاربر سایت

mohammadd

عضویت از 1395/12/08

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

  • یکشنبه 5 خرداد 1398
  • 14:13
تشکر میکنم

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

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

salman_b

عضویت از 1396/02/18

  • یکشنبه 5 خرداد 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 رو ۶۰ ثانیه‌ در نظر بگیری.

موفق باشی.

کاربر سایت

mohammadd

عضویت از 1395/12/08

  • یکشنبه 5 خرداد 1398
  • 20:01

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

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

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

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

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

کاربر سایت

salman_b

عضویت از 1396/02/18

  • دوشنبه 6 خرداد 1398
  • 10:00

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

کاربر سایت

mohammadd

عضویت از 1395/12/08

  • دوشنبه 6 خرداد 1398
  • 19:52

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

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)