Session و Cookie چیست؟ تفاوت Session و Cookie در برنامهنویسی وب
تصور کنید اینستاگرام، دیجیکالا یا جیمیل را باز میکنید و هر بار مجبور هستید دوباره نام کاربری و رمز عبور خود را وارد کنید!
یا وارد یک فروشگاه اینترنتی میشوید، چند محصول را به سبد خرید اضافه میکنید و با رفتن به صفحه بعدی، تمام محصولات ناپدید میشوند.
چنین چیزی تجربه کاربری بسیار بدی ایجاد میکند. اما خوشبختانه فناوریهایی به نام Session و Cookie این مشکل را حل کردهاند.
تقریباً تمام وبسایتهای مدرن، از فروشگاههای اینترنتی گرفته تا شبکههای اجتماعی و سامانههای آموزشی، برای شناسایی کاربران و نگهداری اطلاعات آنها از Session و Cookie استفاده میکنند.
اما Session چیست؟ Cookie چیست؟ و تفاوت Session و Cookie در برنامهنویسی وب چیست؟ 🤔
Cookie چیست؟
Cookie یک فایل کوچک متنی است که توسط وبسایت در مرورگر کاربر ذخیره میشود.
این فایل میتواند اطلاعات مختلفی را نگهداری کند؛ مانند:
🍪 وضعیت ورود کاربر
🍪 تنظیمات زبان سایت
🍪 اطلاعات سبد خرید
🍪 تم روشن یا تاریک سایت
🍪 شناسه کاربر برای مراجعات بعدی
به زبان ساده، Cookie مانند یک یادداشت کوچک است که وبسایت در مرورگر شما قرار میدهد تا در بازدیدهای بعدی بتواند شما را راحتتر شناسایی کند.
یک مثال واقعی از Cookie
فرض کنید وارد یک سایت آموزشی میشوید و زبان سایت را روی فارسی قرار میدهید.
اگر سایت از Cookie استفاده کند، این تنظیم ذخیره میشود و دفعه بعد که وارد سایت شوید، نیازی نیست دوباره زبان موردنظر خود را انتخاب کنید.
در واقع Cookie باعث میشود سایت برخی از ترجیحات شما را به خاطر بسپارد.
یک نمونه کد ساده Cookie
در JavaScript میتوان یک Cookie را به سادگی ایجاد کرد:
document.cookie = "theme=dark";
این کد یک Cookie به نام theme ایجاد میکند و مقدار آن را روی dark قرار میدهد.
سایت میتواند بعداً این مقدار را بخواند و ظاهر تاریک را برای کاربر فعال کند.
Session چیست؟
Session روشی برای نگهداری اطلاعات کاربران در سمت سرور است.
برخلاف Cookie که روی مرورگر ذخیره میشود، اطلاعات Session داخل سرور نگهداری میشوند و تنها یک شناسه مخصوص (Session ID) در مرورگر کاربر ذخیره میشود.
به همین دلیل Session امنیت بیشتری نسبت به Cookie دارد.
Session را با یک مثال ساده درک کنیم
فرض کنید وارد یک باشگاه ورزشی میشوید.
در ورودی یک کارت عضویت با شماره مخصوص دریافت میکنید.
تمام اطلاعات شما شامل:
🏋️ نام
🏋️ نوع عضویت
🏋️ مدت اعتبار
🏋️ خدمات فعال
داخل سیستم باشگاه ذخیره شده است.
روی کارت فقط یک شماره عضویت وجود دارد.
هر بار که کارت را نشان میدهید، مسئول پذیرش اطلاعات شما را از سیستم پیدا میکند.
Session دقیقاً همینگونه عمل میکند:
✅ اطلاعات اصلی روی سرور ذخیره میشوند.
✅ مرورگر فقط Session ID را نگهداری میکند.
✅ سرور از طریق این شناسه کاربر را شناسایی میکند.
Session و Cookie چگونه با هم کار میکنند؟
بسیاری از افراد تصور میکنند Session و Cookie دو فناوری رقیب هستند؛ در حالی که در اکثر وبسایتها این دو در کنار یکدیگر کار میکنند.
معمولاً روند کار به شکل زیر است:
کاربر
↓
مرورگر
↓
Cookie (Session ID)
↓
سرور
↓
Session Data
زمانی که کاربر وارد سایت میشود:
1️⃣ سرور یک Session ایجاد میکند.
2️⃣ یک Session ID تولید میشود.
3️⃣ این شناسه داخل Cookie ذخیره میشود.
4️⃣ در درخواستهای بعدی مرورگر این شناسه را به سرور ارسال میکند.
5️⃣ سرور Session مربوط به همان کاربر را پیدا میکند.
به همین دلیل در بسیاری از سیستمها Session بدون Cookie عملاً قابل استفاده نیست.
Session در برنامهنویسی وب چه کاربردی دارد؟
Session معمولاً برای اطلاعات مهمتر استفاده میشود.
از جمله:
🔐 احراز هویت کاربران
🔐 نگهداری وضعیت ورود
🔐 اطلاعات موقت کاربران
🔐 پنلهای مدیریتی
🔐 سیستمهای بانکی
🔐 فرآیندهای خرید آنلاین
به دلیل امنیت بالاتر، اطلاعات حساس معمولاً داخل Session نگهداری میشوند.
آیا Cookie خطر امنیتی دارد؟
خود Cookie خطرناک نیست، اما استفاده نادرست از آن میتواند مشکلات امنیتی ایجاد کند.
یکی از باورهای اشتباه این است که رمز عبور کاربران داخل Cookie ذخیره میشود.
در سیستمهای حرفهای معمولاً:
❌ رمز عبور در Cookie ذخیره نمیشود.
✅ فقط توکن یا شناسه نشست ذخیره میشود.
برنامهنویسان حرفهای معمولاً:
✔️ از HTTPS استفاده میکنند.
✔️ زمان انقضا تعیین میکنند.
✔️ Cookieها را رمزنگاری میکنند.
✔️ اطلاعات حساس را داخل Session نگهداری میکنند.
Session و Cookie در ASP.NET Core
در ASP.NET Core هر دو قابلیت بهصورت داخلی وجود دارند.
توسعهدهندگان میتوانند:
💻 اطلاعات کاربران را مدیریت کنند.
💻 سیستم ورود و ثبتنام ایجاد کنند.
💻 دادههای موقت را در Session ذخیره کنند.
💻 تنظیمات کاربران را در Cookie نگهداری کنند.
💻 سیستم احراز هویت حرفهای پیادهسازی کنند.
به همین دلیل Session و Cookie از مفاهیم پایهای توسعه وب با ASP.NET Core محسوب میشوند.
چه زمانی از Session و چه زمانی از Cookie استفاده کنیم؟
از Cookie استفاده کنید اگر:
✅ نیاز به ذخیره تنظیمات کاربر دارید.
✅ اطلاعات حساس نیستند.
✅ دادهها باید پس از بسته شدن مرورگر باقی بمانند.
✅ میخواهید ترجیحات کاربر ذخیره شوند.
یکی از رایجترین اشتباهات این است که افراد تصور میکنند باید بین Session و Cookie یکی را انتخاب کنند.
حتی در بسیاری از سیستمهای احراز هویت، Session برای شناسایی کاربران از Cookie کمک میگیرد.
🎯 Session و Cookie از مهمترین مفاهیم برنامهنویسی وب هستند که به وبسایتها کمک میکنند کاربران را شناسایی کرده و اطلاعات موردنیاز آنها را بین درخواستهای مختلف حفظ کنند.
Cookie اطلاعات را در مرورگر کاربر ذخیره میکند و برای نگهداری تنظیمات، ترجیحات و برخی اطلاعات غیرحساس مناسب است. در مقابل، Session اطلاعات را در سرور نگهداری میکند و امنیت بیشتری برای دادههای مهم فراهم میسازد.
امروزه تقریباً تمام وبسایتهای مدرن، از فروشگاههای اینترنتی و شبکههای اجتماعی گرفته تا سامانههای آموزشی و بانکی، از Session و Cookie استفاده میکنند. بنابراین اگر قصد ورود به دنیای برنامهنویسی وب را دارید، یادگیری این دو مفهوم یکی از مهمترین مهارتهای پایهای شما خواهد بود.