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

آموزش جامع کوکی (Cookie) در PHP + مدیریت اصولی و امنیت آن بر اساس استاندارد گوگل

1405/05/01 20:10 محراب حسن زاده
آموزش جامع کوکی (Cookie) در PHP + مدیریت اصولی و امنیت آن بر اساس استاندارد گوگل

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

کوکی (Cookie) چیست و چگونه کار می‌کند؟

کوکی یک فایل متنی کوچک است که توسط سرور ایجاد شده و در مرورگر کاربر ذخیره می‌شود. هر زمان که کاربر درخواست جدیدی به همان سرور ارسال می‌کند، مرورگر کوکی‌های ذخیره شده را همراه با درخواست ارسال می‌کند. این مکانیزم به سرور اجازه می‌دهد تا کاربر را شناسایی کند و وضعیت تعاملی او را به یاد بسپارد.

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

برای ایجاد یک کوکی جدید در PHP، از تابع پیش‌فرض setcookie() استفاده می‌شود. این تابع باید قبل از ارسال هرگونه خروجی HTML به مرورگر فراخوانی شود.

سینتکس پایه این تابع به شکل زیر است:

setcookie(name, value, expire, path, domain, secure, httponly);

توضیح پارامترهای کلیدی:

  • name: نام کوکی (تنها پارامتر اجباری).
  • value: مقداری که در کوکی ذخیره می‌شود.
  • expire: زمان انقضای کوکی به ثانیه (Timestamp). اگر تنظیم نشود، با بستن مرورگر حذف می‌شود.
  • path: مسیری در سرور که کوکی در آن در دسترس است (معمولاً '/' برای کل سایت).
  • secure: اگر روی true تنظیم شود، کوکی فقط از طریق پروتکل امن HTTPS ارسال می‌شود.
  • httponly: اگر true باشد، جاوااسکریپت نمی‌تواند به کوکی دسترسی داشته باشد که این امر امنیت را در برابر حملات XSS به شدت افزایش می‌دهد.

یک مثال عملی برای ساخت کوکی:


$cookie_name = "user_theme";
$cookie_value = "dark";
// تنظیم کوکی برای 30 روز آینده
$expire_time = time() + (86400 * 30);

setcookie($cookie_name, $cookie_value, $expire_time, "/", "", true, true);
echo "کوکی با موفقیت تنظیم شد!";

خواندن مقادیر کوکی‌ها در PHP

برای دسترسی به کوکی‌هایی که قبلاً ذخیره شده‌اند، از متغیر فوق‌سراسری (Superglobal) به نام $_COOKIE استفاده می‌کنیم. قبل از خواندن کوکی، همیشه باید با تابع isset() وجود آن را بررسی کنید.


if(isset($_COOKIE['user_theme'])) {
    $theme = $_COOKIE['user_theme'];
    echo "پوسته انتخابی شما: " . htmlspecialchars($theme);
} else {
    echo "هیچ پوسته‌ای انتخاب نشده است. پوسته پیش‌فرض فعال شد.";
}

حذف یک کوکی در PHP

در PHP تابع مستقیمی به نام delete_cookie وجود ندارد! برای حذف یک کوکی، کافی است مجدداً همان کوکی را با زمان انقضایی در گذشته (مثلاً یک ساعت قبل) بازنویسی کنید.


// تغییر زمان انقضا به یک ساعت قبل جهت حذف کوکی
setcookie("user_theme", "", time() - 3600, "/");
echo "کوکی با موفقیت حذف شد.";

امنیت کوکی‌ها و استانداردهای نوین گوگل

گوگل و مرورگرهای مدرن (مانند کروم) قوانین سخت‌گیرانه‌ای برای استفاده از کوکی‌ها دارند. برای هماهنگی با این استانداردها و افزایش امنیت وب‌سایت خود، حتماً موارد زیر را رعایت کنید:

  1. فلگ HttpOnly: همیشه این فلگ را برابر با true قرار دهید تا هکرها نتوانند از طریق کدهای مخرب جاوااسکریپت، کوکی‌های حساس را سرقت کنند.
  2. فلگ Secure: از اتصال SSL (HTTPS) استفاده کرده و فلگ Secure را فعال کنید.
  3. ویژگی SameSite: این ویژگی برای جلوگیری از حملات CSRF حیاتی است. در PHPهای مدرن می‌توانید آن را روی یکی از مقادیر Lax یا Strict تنظیم کنید.

تنظیم کوکی امن در PHP 7.3 به بالا:


setcookie("secure_user_id", "98765", [
    'expires' =--> time() + 3600,
    'path' => '/',
    'domain' => '',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Lax'
]);

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها
1403/08/12 19:59

آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها

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

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

مطالعه بیشتر
آموزش جامع و استاندارد کار با رشته‌ ها در PHP
1405/04/27 20:59

آموزش جامع و استاندارد کار با رشته‌ ها در PHP

مطالعه بیشتر
آموزش صفحه‌بندی اطلاعات در PHP به صورت اصولی و مطابق استانداردهای سئو گوگل
1405/05/13 21:21

آموزش صفحه‌بندی اطلاعات در PHP به صورت اصولی و مطابق استانداردهای سئو گوگل

مطالعه بیشتر
واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا
1403/08/11 20:43

واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا

مطالعه بیشتر
آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)
1405/05/04 23:40

آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)

مطالعه بیشتر
راهنمای جامع جلوگیری از SQL Injection در PHP (طبق استانداردهای گوگل)
1405/05/13 21:19

راهنمای جامع جلوگیری از SQL Injection در PHP (طبق استانداردهای گوگل)

مطالعه بیشتر
آموزش کامل include و require در PHP + تفاوت‌های کلیدی و کاربردی
1405/05/01 20:28

آموزش کامل include و require در PHP + تفاوت‌های کلیدی و کاربردی

مطالعه بیشتر
آموزش تغییر المان‌های DOM: ویرایش متن، سبک‌ها و کلاس‌ها در جاوا اسکریپت - راهنمای کامل با مثال‌ها
1403/08/02 21:01

آموزش تغییر المان‌های DOM: ویرایش متن، سبک‌ها و کلاس‌ها در جاوا اسکریپت - راهنمای کامل با مثال‌ها

مطالعه بیشتر
الگوهای رایج برنامه‌نویسی ناهمگام در جاوا اسکریپت: Promise.race، Promise.all، و Promise.any کامل و مثال‌ها
1403/08/01 19:08

الگوهای رایج برنامه‌نویسی ناهمگام در جاوا اسکریپت: Promise.race، Promise.all، و Promise.any کامل و مثال‌ها

مطالعه بیشتر
آموزش جامع رمزنگاری پسورد با password_hash در PHP بر اساس استاندارد گوگل
1405/05/14 22:07

آموزش جامع رمزنگاری پسورد با password_hash در PHP بر اساس استاندارد گوگل

مطالعه بیشتر
آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع
1403/07/28 21:41

آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع

مطالعه بیشتر

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