آموزش رایگان PHP

تفاوت Session و Cookie در PHP؛ راهنمای جامع و کاربردی طبق استاندارد گوگل

1405/05/01 20:14 محراب حسن زاده
تفاوت Session و Cookie در PHP؛ راهنمای جامع و کاربردی طبق استاندارد گوگل

مقدمه: چرا به مدیریت وضعیت (State Management) نیاز داریم؟

پروتکل HTTP که پایه و اساس وب است، یک پروتکل Stateless (بدون حالت) است. این یعنی سرور پس از ارسال پاسخ به مرورگر کاربر، همه چیز را فراموش می‌کند و درخواست بعدی کاربر را به عنوان یک کاربر کاملاً جدید در نظر می‌گیرد. برای حل این مشکل و حفظ اطلاعات کاربر در صفحات مختلف (مثل وضعیت ورود به سایت یا سبد خرید)، دو ابزار اصلی داریم: کوکی‌ها (Cookies) و سشن‌ها (Sessions).

در این مقاله تفاوت‌های بنیادین این دو مفهوم را در زبان PHP بر اساس آخرین استانداردهای امنیتی گوگل بررسی می‌کنیم.

کوکی (Cookie) چیست؟

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

نحوه ساخت کوکی در PHP

برای ایجاد کوکی در PHP از تابع setcookie() استفاده می‌شود:


// ساخت یک کوکی با ماندگاری 1 روز
$cookie_name = "user_login";
$cookie_value = "Ali_Dev";
$expiry_time = time() + (86400 * 1); // 86400 ثانیه در روز

setcookie($cookie_name, $cookie_value, [
    'expires' =--> $expiry_time,
    'path' => '/',
    'domain' => 'example.com',
    'secure' => true,     // فقط روی HTTPS ارسال شود
    'httponly' => true,   // عدم دسترسی جاوااسکریپت برای جلوگیری از XSS
    'samesite' => 'Strict' // جلوگیری از حملات CSRF
]);

سشن (Session) چیست؟

بر خلاف کوکی، سشن داده‌ها را روی سرور ذخیره می‌کند. در واقع یک شناسه منحصربه‌فرد تصادفی به نام Session ID تولید شده و به عنوان یک کوکی موقت در مرورگر کاربر ذخیره می‌شود. هر زمان کاربر درخواستی می‌فرستد، سرور با خواندن این شناسه، پوشه اطلاعات او را در حافظه خود پیدا می‌کند.

نحوه استفاده از سشن در PHP

برای کار با سشن‌ها، ابتدا باید آن را با تابع session_start() شروع کنیم:


session_start(); // شروع سشن

// ذخیره داده‌ها در سشن
$_SESSION["user_id"] = 1402;
$_SESSION["role"] = "administrator";

// دسترسی به داده‌ها در صفحات دیگر
echo "شناسه کاربری: " . $_SESSION["user_id"];

جدول مقایسه تفاوت‌های کلیدی Session و Cookie

ویژگی کوکی (Cookie) سشن (Session)
محل ذخیره‌سازی مرورگر کاربر (Client-side) وب‌سرور (Server-side)
امنیت داده‌ها کمتر (قابل ویرایش توسط کاربر) بسیار بالا (دسترس‌ناپذیر برای کلاینت)
ظرفیت ذخیره‌سازی محدود به 4 کیلوبایت نامحدود (بسته به هارد دیسک سرور)
طول عمر (Lifespan) قابل تنظیم (حتی سال‌ها پس از بستن مرورگر) معمولاً با بستن مرورگر از بین می‌رود
تاثیر روی سرعت لود با افزایش تعداد، ترافیک هدرها بالا می‌رود بسیار ناچیز (تنها شناسه سشن ارسال می‌شود)

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

گوگل در فرآیند رتبه‌بندی و امنیت وب‌سایت‌ها (SEO و Lighthouse)، به شدت به امنیت اطلاعات کاربران اهمیت می‌دهد. اگر از کوکی استفاده می‌کنید، رعایت موارد زیر الزامی است:

  • فعال‌سازی HttpOnly: مانع دسترسی کدهای مخرب جاوااسکریپت به کوکی شما می‌شود و خطر حملات XSS را کاهش می‌دهد.
  • فعال‌سازی Secure flag: تضمین می‌کند کوکی فقط از کانال امن HTTPS عبور کند.
  • خصیصه SameSite: با تنظیم روی Lax یا Strict، از حملات هک خطرناک CSRF (جعل درخواست بین‌سایتی) جلوگیری کنید.

چه زمانی از کوکی و چه زمانی از سشن استفاده کنیم؟

از کوکی استفاده کنید اگر: می‌خواهید اطلاعات غیرحساسی مانند تم سایت (تاریک/روشن)، زبان انتخابی کاربر، یا ویژگی "مرا به خاطر بسپار" (Remember Me) را برای مدت طولانی ذخیره کنید.

از سشن استفاده کنید اگر: با داده‌های حساس و امنیتی سر و کار دارید؛ مانند وضعیت لاگین بودن کاربر، سبد خرید، اطلاعات حساب کاربری و کدهای تایید دو مرحله‌ای.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر
1403/08/03 17:08

آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر

مطالعه بیشتر
معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن
1402/06/28 00:59

معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن

مطالعه بیشتر
آموزش جامع Session در PHP به زبان ساده + پروژه عملی شبیه‌ساز
1405/05/01 20:07

آموزش جامع Session در PHP به زبان ساده + پروژه عملی شبیه‌ساز

مطالعه بیشتر
آموزش کامل ویژگی background در CSS: تنظیمات پس‌زمینه برای طراحی وب راهنمای جامع
1402/06/05 23:51

آموزش کامل ویژگی background در CSS: تنظیمات پس‌زمینه برای طراحی وب راهنمای جامع

مطالعه بیشتر
مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها
1403/07/29 20:37

مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها

مطالعه بیشتر
آموزش کامل کار با fopen، سطوح دسترسی و حذف فایل در PHP
1405/05/04 23:28

آموزش کامل کار با fopen، سطوح دسترسی و حذف فایل در PHP

مطالعه بیشتر
آموزش کامل کار با تابع password_verify در PHP (امنیت رمز عبور)
1405/05/14 22:09

آموزش کامل کار با تابع password_verify در PHP (امنیت رمز عبور)

مطالعه بیشتر
آموزش استفاده از box-shadow و text-shadow در CSS: ایجاد سایه‌های زیبا و جذاب
1403/08/11 21:20

آموزش استفاده از box-shadow و text-shadow در CSS: ایجاد سایه‌های زیبا و جذاب

مطالعه بیشتر
آموزش کامل ثابت‌ها در PHP: تفاوت عمیق define و const طبق استانداردهای گوگل
1405/03/24 01:10

آموزش کامل ثابت‌ها در PHP: تفاوت عمیق define و const طبق استانداردهای گوگل

مطالعه بیشتر
معرفی جاوا اسکریپت و نحوه استفاده از آن برای توسعه وب تعاملی: راهنمای جامع
1402/06/27 23:35

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

مطالعه بیشتر
آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب
1403/08/09 20:59

آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب

مطالعه بیشتر
راهنمای کامل لیست‌ها در HTML: آموزش انواع و اصول سئو
1402/05/20 22:02

راهنمای کامل لیست‌ها در HTML: آموزش انواع و اصول سئو

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد