ویژگی های کوکی، ویژگی های کوکی

هنگامی که یک وب سرور به درخواست یک منبع پاسخ می دهد، سرور می تواند یک هدر Set-Cookie را همراه با پاسخ خود قرار دهد. آن هدر به مرورگر شما می گوید که یک کوکی ذخیره کند. به عنوان مثال: Set-Cookie:cat=tabby . کوکی ها چیست؟ نحوه عملکرد کوکی ها را توضیح می دهد.

علاوه بر ارائه نام و مقدار کوکی، Set-Cookie می‌تواند شامل ویژگی‌هایی برای کنترل تنظیم بودن کوکی‌ها و زمان انقضای آنها باشد. ویژگی های کوکی با نقطه ویرگول از هم جدا می شوند. به عنوان مثال:

    Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

این مقاله مهمترین ویژگی های کوکی را توضیح می دهد:

استفاده از کوکی های HTTP ویژگی های کوکی را با جزئیات فنی بیشتری توضیح می دهد.

امن

👉 باید Secure به طور پیش فرض برای همه کوکی ها قرار دهید.

اگر هدر Set-Cookie شامل Secure باشد، کوکی فقط با درخواست‌های رمزگذاری‌شده که از پروتکل HTTPS استفاده می‌کنند شامل می‌شود: کوکی در درخواست‌های HTTP گنجانده نمی‌شود. این می تواند به توقف حملات واسطه ای کمک کند، جایی که یک مهاجم مخفیانه در ارتباطات بین مرورگر و سرور مداخله می کند - برای انتقال اطلاعات و به طور بالقوه تغییر آن.

فقط HTTPO

👉 شما باید HTTPOnly به طور پیش فرض برای همه کوکی ها قرار دهید. فقط در صورت نیاز به دسترسی جاوا اسکریپت حذف کنید.

اگر سرصفحه Set-Cookie شامل HTTPOnly باشد، با استفاده از document.cookie نمی توان به کوکی دسترسی داشت. این به محافظت در برابر انواع خاصی از حملات که کوکی ها را هدف قرار می دهند کمک می کند.

همان سایت

👉 اگر مقداری تنظیم نشده باشد SameSite=Lax پیش‌فرض است. SameSite=None به کوکی‌های بین سایتی اجازه نمی‌دهد، اما به این معنی است که کوکی‌ها در جایی که محدودیت‌های کوکی شخص ثالث وجود دارد مسدود می‌شوند.

درخواست منبعی از سایتی که با سایتی که بازدید می کنید متفاوت است، درخواست بین سایتی است. مجموعه کوکی در پاسخ به درخواست بین سایتی به عنوان کوکی شخص ثالث شناخته می شود. بیشتر بدانید: کوکی های شخص ثالث چیست؟

ویژگی SameSite کنترل می کند که آیا کوکی شخص ثالث در یک درخواست گنجانده شود یا خیر. دارای سه مقدار ممکن است: Strict ، Lax یا None .

سختگیرانه

کوکی فقط در پاسخ به درخواست های صفحه ای که در سایت اصلی کوکی است ارسال می شود. به عنوان مثال: تصور کنید کاربری از cats.example بازدید می کند و یک مجموعه کوکی با ویژگی SameSite=Strict دارد. بعداً، کاربر در سایت دیگری است و پیوندی را به صفحه ای در cats.example دنبال می کند. کوکی تنظیم شده در آن درخواست گنجانده نمی شود.

سست

این کار مانند Strict عمل می‌کند، با این تفاوت که وقتی کاربر پیوندی را به سایت اصلی کوکی دنبال می‌کند، مرورگر کوکی را نیز شامل می‌شود. (در مثال Strict قبلی، زمانی که کاربر پیوند cats.example را دنبال می‌کند، کوکی گنجانده می‌شود .) اگر هیچ ویژگی SameSite در سرصفحه Set-Cookie وجود نداشته باشد، Lax پیش‌فرض است.

هیچ کدام

هیچ محدودیتی وجود ندارد: کوکی با یک درخواست همراه می‌شود، خواه بین سایتی باشد یا نباشد. با SameSite=None ، کوکی باید ویژگی Secure را نیز داشته باشد.

بیشتر بدانید: کوکی های SameSite توضیح داده شده است .

پارتیشن بندی شده

👉 اگر کوکی شخص ثالثی ایجاد می‌کنید، باید ویژگی Partitioned را به‌طور پیش‌فرض اضافه کنید، مگر اینکه صریحاً بدانید که باید در چندین جاسازی به اشتراک گذاشته شود.

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

به عنوان مثال: تصور کنید که وب‌سایت A و وب‌سایت B هر دو دارای یک iframe از وب‌سایت C هستند. یک کوکی پارتیشن‌بندی شده توسط iframe در وب‌سایت A قابل دسترسی توسط iframe در وب‌سایت B نیست: کوکی AC از کوکی BC جدا است.

نمودار نشان می دهد که دو وب سایت مختلف یک شخص ثالث مشترک را تعبیه کرده اند   دیگر کوکی ها را برای آن شخص ثالث به اشتراک نخواهد گذاشت.
با پارتیشن بندی کوکی، یک سرویس شخص ثالث که یک کوکی را زمانی که در یک سایت سطح بالا جاسازی می شود تنظیم می کند، نمی تواند به همان کوکی دسترسی داشته باشد، زمانی که این سرویس در سایت های سطح بالای دیگر جاسازی شده است.

کوکی‌های دارای ویژگی Partitioned به عنوان CHIPS شناخته می‌شوند: کوکی‌هایی که حالت پارتیشن مستقل دارند.

کوکی های پارتیشن بندی شده باید دارای ویژگی Secure باشند.

بیشتر بیاموزید: کوکی هایی که حالت تقسیم شده مستقل دارند .

منقضی و حداکثر سن

👉 ویژگی های Max-Age و Expires را کنار بگذارید مگر اینکه به یک کوکی برای ماندگاری بیشتر از جلسه فعلی نیاز داشته باشید. مرورگرها کوکی‌ها را منقضی می‌کنند ، بنابراین هیچ فایده‌ای برای تعیین انقضای سال‌ها در آینده وجود ندارد. در عوض، زمانی که کاربر مجدداً از سایت شما بازدید می کند، باید کوکی ها را به روز کنید.

می توانید تاریخ و زمان Expires یا Max-Age را در چند ثانیه تعیین کنید، پس از آن یک کوکی باید حذف شود و دیگر ارسال نشود. به عنوان مثال:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

اگر ویژگی Max-Age یا Expires را مشخص نکنید، با پایان یافتن جلسه فعلی، یک کوکی حذف خواهد شد. این نوع کوکی گاهی اوقات به عنوان کوکی جلسه شناخته می شود.

دامنه

👉 جز در مواردی که نیاز به یک کوکی برای گنجاندن درخواست‌های زیر دامنه‌ها ندارید، ویژگی Domain را وارد نکنید.

اگر هدر Set-Cookie دارای ویژگی Domain باشد، کوکی با درخواست‌هایی به دامنه مشخص شده و هر یک از زیر دامنه‌های آن اضافه می‌شود.

اگر سرصفحه Set-Cookie دارای ویژگی Domain نباشد، کوکی با درخواست‌های زیر دامنه‌ها اضافه نمی‌شود.

به عبارت دیگر گنجاندن ویژگی Domain محدودیت های دامنه را کاهش می دهد .

به عنوان مثال، با پاسخی از وب سایت cats.example :

  • Set-Cookie:cat=tabby
    کوکی فقط با درخواست‌های cats.example همراه خواهد بود
  • Set-Cookie:cat=tabby; Domain=cats.example
    این کوکی با درخواست‌های cats.example و همچنین هرگونه درخواست برای منابع در زیر دامنه‌هایی مانند fluffy.cats.example یا user.assets.cats.example گنجانده می‌شود.

مسیر

👉 در صورت نیاز به تمام درخواست‌ها به هر مسیری در سایت خود برای گنجاندن کوکی Path=/ را با یک کوکی اضافه کنید. برای حفاظت از امنیت به Path تکیه نکنید .

اگر ویژگی Path در سرصفحه پاسخ Set-Cookie گنجانده شود، کوکی تنظیم شده فقط در درخواست‌های URL (در سایتی که کوکی را تنظیم کرده است!) که با مقدار Path مطابقت دارند، گنجانده می‌شود.

به عنوان مثال:

  • Set-Cookie:cat=tabby; Path=/articles
    کوکی برای درخواست به هر مسیر URL که با /articles شروع می شود شامل می شود:
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    تمام درخواست ها به هر URL در سایت شامل کوکی می شود.

اگر سرصفحه پاسخ Set-Cookie مقدار Path نداشته باشد، کوکی فقط با درخواست‌هایی به همان فهرست اضافه می‌شود. برای مثال، تصور کنید که یک کوکی cat=tabby در پاسخ به درخواست cats.example/images/tabby.jpg. اگر Path تنظیم نشده باشد، کوکی فقط با درخواست‌هایی برای فایل‌های داخل فهرست راهنمای cats.example/images گنجانده می‌شود.

دموها

ابزار

بیشتر بدانید

،

هنگامی که یک وب سرور به درخواست یک منبع پاسخ می دهد، سرور می تواند یک هدر Set-Cookie را همراه با پاسخ خود قرار دهد. آن هدر به مرورگر شما می گوید که یک کوکی ذخیره کند. به عنوان مثال: Set-Cookie:cat=tabby . کوکی ها چیست؟ نحوه عملکرد کوکی ها را توضیح می دهد.

علاوه بر ارائه نام و مقدار کوکی، Set-Cookie می‌تواند شامل ویژگی‌هایی برای کنترل تنظیم بودن کوکی‌ها و زمان انقضای آنها باشد. ویژگی های کوکی با نقطه ویرگول از هم جدا می شوند. به عنوان مثال:

    Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

این مقاله مهمترین ویژگی های کوکی را توضیح می دهد:

استفاده از کوکی های HTTP ویژگی های کوکی را با جزئیات فنی بیشتری توضیح می دهد.

امن

👉 باید Secure به طور پیش فرض برای همه کوکی ها قرار دهید.

اگر هدر Set-Cookie شامل Secure باشد، کوکی فقط با درخواست‌های رمزگذاری‌شده که از پروتکل HTTPS استفاده می‌کنند شامل می‌شود: کوکی در درخواست‌های HTTP گنجانده نمی‌شود. این می تواند به توقف حملات واسطه ای کمک کند، جایی که یک مهاجم مخفیانه در ارتباطات بین مرورگر و سرور مداخله می کند - برای انتقال اطلاعات و به طور بالقوه تغییر آن.

فقط HTTPO

👉 شما باید HTTPOnly به طور پیش فرض برای همه کوکی ها قرار دهید. فقط در صورت نیاز به دسترسی جاوا اسکریپت حذف کنید.

اگر سرصفحه Set-Cookie شامل HTTPOnly باشد، با استفاده از document.cookie نمی توان به کوکی دسترسی داشت. این به محافظت در برابر انواع خاصی از حملات که کوکی ها را هدف قرار می دهند کمک می کند.

همان سایت

👉 اگر مقداری تنظیم نشده باشد SameSite=Lax پیش‌فرض است. SameSite=None به کوکی‌های بین سایتی اجازه نمی‌دهد، اما به این معنی است که کوکی‌ها در جایی که محدودیت‌های کوکی شخص ثالث وجود دارد مسدود می‌شوند.

درخواست منبعی از سایتی که با سایتی که بازدید می کنید متفاوت است، درخواست بین سایتی است. مجموعه کوکی در پاسخ به درخواست بین سایتی به عنوان کوکی شخص ثالث شناخته می شود. بیشتر بدانید: کوکی های شخص ثالث چیست؟

ویژگی SameSite کنترل می کند که آیا کوکی شخص ثالث در یک درخواست گنجانده شود یا خیر. دارای سه مقدار ممکن است: Strict ، Lax یا None .

سختگیرانه

کوکی فقط در پاسخ به درخواست های صفحه ای که در سایت اصلی کوکی است ارسال می شود. به عنوان مثال: تصور کنید کاربری از cats.example بازدید می کند و یک مجموعه کوکی با ویژگی SameSite=Strict دارد. بعداً، کاربر در سایت دیگری است و پیوندی را به صفحه ای در cats.example دنبال می کند. کوکی تنظیم شده در آن درخواست گنجانده نمی شود.

سست

این کار مانند Strict عمل می‌کند، با این تفاوت که وقتی کاربر پیوندی را به سایت اصلی کوکی دنبال می‌کند، مرورگر کوکی را نیز شامل می‌شود. (در مثال Strict قبلی، زمانی که کاربر پیوند cats.example را دنبال می‌کند، کوکی گنجانده می‌شود .) اگر هیچ ویژگی SameSite در سرصفحه Set-Cookie وجود نداشته باشد، Lax پیش‌فرض است.

هیچ کدام

هیچ محدودیتی وجود ندارد: کوکی با یک درخواست همراه می‌شود، خواه بین سایتی باشد یا نباشد. با SameSite=None ، کوکی باید ویژگی Secure را نیز داشته باشد.

بیشتر بدانید: کوکی های SameSite توضیح داده شده است .

پارتیشن بندی شده

👉 اگر کوکی شخص ثالثی ایجاد می‌کنید، باید ویژگی Partitioned را به‌طور پیش‌فرض اضافه کنید، مگر اینکه صریحاً بدانید که باید در چندین جاسازی به اشتراک گذاشته شود.

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

به عنوان مثال: تصور کنید که وب‌سایت A و وب‌سایت B هر دو دارای یک iframe از وب‌سایت C هستند. یک کوکی پارتیشن‌بندی شده توسط iframe در وب‌سایت A قابل دسترسی توسط iframe در وب‌سایت B نیست: کوکی AC از کوکی BC جدا است.

نمودار نشان می دهد که دو وب سایت مختلف یک شخص ثالث مشترک را تعبیه کرده اند   دیگر کوکی ها را برای آن شخص ثالث به اشتراک نخواهد گذاشت.
با پارتیشن بندی کوکی، یک سرویس شخص ثالث که یک کوکی را زمانی که در یک سایت سطح بالا جاسازی می شود تنظیم می کند، نمی تواند به همان کوکی دسترسی داشته باشد، زمانی که این سرویس در سایت های سطح بالای دیگر جاسازی شده است.

کوکی‌های دارای ویژگی Partitioned به عنوان CHIPS شناخته می‌شوند: کوکی‌هایی که حالت پارتیشن مستقل دارند.

کوکی های پارتیشن بندی شده باید دارای ویژگی Secure باشند.

بیشتر بیاموزید: کوکی هایی که حالت تقسیم شده مستقل دارند .

منقضی و حداکثر سن

👉 ویژگی های Max-Age و Expires را کنار بگذارید مگر اینکه به یک کوکی برای ماندگاری بیشتر از جلسه فعلی نیاز داشته باشید. مرورگرها کوکی‌ها را منقضی می‌کنند ، بنابراین هیچ فایده‌ای برای تعیین انقضای سال‌ها در آینده وجود ندارد. در عوض، زمانی که کاربر مجدداً از سایت شما بازدید می کند، باید کوکی ها را به روز کنید.

می توانید تاریخ و زمان Expires یا Max-Age را در چند ثانیه تعیین کنید، پس از آن یک کوکی باید حذف شود و دیگر ارسال نشود. به عنوان مثال:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

اگر ویژگی Max-Age یا Expires را مشخص نکنید، با پایان یافتن جلسه فعلی، یک کوکی حذف خواهد شد. این نوع کوکی گاهی اوقات به عنوان کوکی جلسه شناخته می شود.

دامنه

👉 جز در مواردی که نیاز به یک کوکی برای گنجاندن درخواست‌های زیر دامنه‌ها ندارید، ویژگی Domain را وارد نکنید.

اگر هدر Set-Cookie دارای ویژگی Domain باشد، کوکی با درخواست‌هایی به دامنه مشخص شده و هر یک از زیر دامنه‌های آن اضافه می‌شود.

اگر سرصفحه Set-Cookie دارای ویژگی Domain نباشد، کوکی با درخواست‌های زیر دامنه‌ها اضافه نمی‌شود.

به عبارت دیگر گنجاندن ویژگی Domain محدودیت های دامنه را کاهش می دهد .

به عنوان مثال، با پاسخی از وب سایت cats.example :

  • Set-Cookie:cat=tabby
    کوکی فقط با درخواست‌های cats.example همراه خواهد بود
  • Set-Cookie:cat=tabby; Domain=cats.example
    این کوکی با درخواست‌های cats.example و همچنین هرگونه درخواست برای منابع در زیر دامنه‌هایی مانند fluffy.cats.example یا user.assets.cats.example گنجانده می‌شود.

مسیر

👉 در صورت نیاز به تمام درخواست‌ها به هر مسیری در سایت خود برای گنجاندن کوکی Path=/ را با یک کوکی اضافه کنید. برای حفاظت از امنیت به Path تکیه نکنید .

اگر ویژگی Path در سرصفحه پاسخ Set-Cookie گنجانده شود، کوکی تنظیم شده فقط در درخواست‌های URL (در سایتی که کوکی را تنظیم کرده است!) که با مقدار Path مطابقت دارند، گنجانده می‌شود.

به عنوان مثال:

  • Set-Cookie:cat=tabby; Path=/articles
    کوکی برای درخواست به هر مسیر URL که با /articles شروع می شود شامل می شود:
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    تمام درخواست ها به هر URL در سایت شامل کوکی می شود.

اگر سرصفحه پاسخ Set-Cookie مقدار Path نداشته باشد، کوکی فقط با درخواست‌هایی به همان فهرست اضافه می‌شود. برای مثال، تصور کنید که یک کوکی cat=tabby در پاسخ به درخواست cats.example/images/tabby.jpg. اگر Path تنظیم نشده باشد، کوکی فقط با درخواست‌هایی برای فایل‌های داخل فهرست راهنمای cats.example/images گنجانده می‌شود.

دموها

ابزار

بیشتر بدانید