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

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

کاربر سایت

mohammadd

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

سوال درباره Session

  • چهارشنبه 10 بهمن 1397
  • 10:28
تشکر میکنم

من تیمی دارم روی یه پروژه وبی کار میکنم تو بحث متغیر استاتیک خب به مشکل همزمانی خوردم حالا اومدم از Session استفاده کنم

ولی مشکل اینه آیا راه منطقی هست؟ امنیت Session میگن ضعیفه

من برای لاگینمم از session استفاده کردم راه کا جز session چیه ؟

برای ذخیره نام کاربری از جز session استفاده کنم تو فروم های مختلفی خوندم سشن بده angry

میشه لطفا پاک نکنید به خاطر عنوان نامناسب یا ...wink

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

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

salman_b

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

  • چهارشنبه 10 بهمن 1397
  • 13:16

دوست من دو راه احراز هویت سمت وب هست

اولی اینه که شما از token های stateless مثل JWT استفاده کنی که کاملا سمت کاربر ذخیره میشه و شما فقط یکبار صادر میکنی و دیگه کنترلی روش نداری

که خب این مورد معمولا برای احراز هویت های زمان دار مثل استفاده از سرویس های عمومی گوگل و ... و یا زمانی که به درگاه پرداخت بانکی وصل میشین از token های stateless با زمان انقضای مثلا 10 دقیقه استفاده می‌کنن.

این مورد اصلا به درد سایت ها نمیخوره و فکر می‌کنم دلیلش واضح باشه.

روش دوم روشی هستش که همه ازش استفاده میکنن حالا به روش های مختلف که میشه توضیح زیر

شما یک id به عنوان Session Id به کاربر میدی که برای امنیت کار باید حواست باشه که Session Id رو از hash شده ی چند مقدار مشخص سمت سرور بسازی. مورد امنیتی بعدی اینه که در این روش حتما و حتما باید Session Id توسط یه پروتکل رمز نگاری نامتقارن مثل https رمز بشه.

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

بهترین راه نگهداری Session دیتابیس Redis هستش که خارج از نیاز شماست توضیحش.

خطرهایی که Session رو تهدید میکنه یک دزدیده شدن Session هستش که خب تقریبا غیر ممکنه مگر اینکه کاربری که داره از سایت استفاده میکنه ناشی باشه ( هک های تلگرام و اینستاگرام و ... )

خطر بعدی اینه که یه کاربر بتونه Session Id رو سمت خودش تغییر بده و بفرسته سمت سرور تا اینطوری سرور فکر کنه که این درخواست توسط شخص دیگری ارسال شده!

برای این موضوع هم شما نباید Session Id رو عدد بدی و یا مقادیر قابل حدس زدن! و اینکه SessionId رو داخل token احراز هویت نگهداری میکنی تا حتی توسط کاربر هم قابل خوندن نباشه.

مواردی که گفتم رو رعایت کن و نگران هیچ چیز در این قسمت نباش.

موفق باشی.

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

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

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

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