هنگامی که یک وب سرور به درخواست یک منبع پاسخ می دهد، سرور می تواند یک هدر Set-Cookie
را همراه با پاسخ خود قرار دهد. آن هدر به مرورگر شما می گوید که یک کوکی ذخیره کند. به عنوان مثال: Set-Cookie:cat=tabby
. کوکی ها چیست؟ نحوه عملکرد کوکی ها را توضیح می دهد.
علاوه بر ارائه نام و مقدار کوکی، Set-Cookie
میتواند شامل ویژگیهایی برای کنترل تنظیم بودن کوکیها و زمان انقضای آنها باشد. ویژگی های کوکی با نقطه ویرگول از هم جدا می شوند. به عنوان مثال:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
این سند مهمترین ویژگی های کوکی را توضیح می دهد:
استفاده از کوکی های HTTP ویژگی های کوکی را با جزئیات فنی بیشتری توضیح می دهد.
اگر هدر Set-Cookie
شامل Secure
باشد، کوکی فقط با درخواستهای رمزگذاریشده که از پروتکل HTTPS استفاده میکنند شامل میشود: کوکی در درخواستهای HTTP گنجانده نمیشود. این می تواند به توقف حملات واسطه ای کمک کند، جایی که یک مهاجم مخفیانه در ارتباطات بین مرورگر و سرور مداخله می کند - برای انتقال اطلاعات و به طور بالقوه تغییر آن.
اگر هدر Set-Cookie
شامل HTTPOnly
باشد، جاوا اسکریپت نمیتواند به کوکی دسترسی داشته باشد، برای مثال با استفاده از document.cookie
. این به محافظت در برابر انواع خاصی از حملاتی که کوکی ها را هدف قرار می دهند کمک می کند.
درخواست منبعی از سایتی که با سایتی که بازدید می کنید متفاوت است، درخواست بین سایتی است. مجموعه کوکی در پاسخ به درخواست بین سایتی یک کوکی شخص ثالث است.
ویژگی SameSite
کنترل می کند که آیا کوکی شخص ثالث در یک درخواست گنجانده شود یا خیر. دارای سه مقدار ممکن است: Strict
، Lax
یا None
.
بیشتر بدانید: کوکی های شخص ثالث چیست؟
کوکی فقط در پاسخ به درخواست های صفحه ای که در سایت اصلی کوکی است ارسال می شود. به عنوان مثال: تصور کنید کاربری از cats.example
بازدید می کند و یک مجموعه کوکی با ویژگی SameSite=Strict
دارد. بعداً، کاربر در سایت دیگری است و پیوندی را به صفحه ای در cats.example
دنبال می کند. کوکی تنظیم شده در آن درخواست گنجانده نمی شود.
این کار مانند Strict
عمل میکند، با این تفاوت که وقتی کاربر پیوندی را به سایت اصلی کوکی دنبال میکند، مرورگر کوکی را نیز شامل میشود. (در مثال Strict
قبلی، زمانی که کاربر پیوند cats.example
را دنبال میکند، کوکی گنجانده میشود .) اگر هیچ ویژگی SameSite
در سرصفحه Set-Cookie
وجود نداشته باشد، Lax
پیشفرض است.
هیچ محدودیتی وجود ندارد: کوکی با یک درخواست همراه میشود، خواه بین سایتی باشد یا نباشد. با SameSite=None
، کوکی باید ویژگی Secure
را نیز داشته باشد.
این ویژگی به شما امکان میدهد کوکی را در فضای ذخیرهسازی پارتیشنبندی شده انتخاب کنید، با یک "شیشه کوکی" جداگانه برای هر سایت سطح بالا. کوکی توسط سایت سطح بالا و همچنین دامنه ای که آن را تنظیم می کند دو کلید می شود.
به عنوان مثال: تصور کنید که وبسایت A و وبسایت B هر دو دارای یک iframe از وبسایت C هستند. یک کوکی پارتیشنبندی شده توسط iframe در وبسایت A قابل دسترسی توسط iframe در وبسایت B نیست: کوکی AC از کوکی BC جدا است.
کوکیهای دارای ویژگی Partitioned
به عنوان CHIPS شناخته میشوند: کوکیهایی که حالت پارتیشن مستقل دارند.
کوکی های پارتیشن بندی شده باید دارای ویژگی Secure
باشند.
بیشتر بیاموزید: کوکی هایی که حالت تقسیم شده مستقل دارند .
می توانید تاریخ و زمان 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
را مشخص نکنید، با پایان یافتن جلسه فعلی، یک کوکی حذف خواهد شد. این نوع کوکی گاهی اوقات به عنوان کوکی جلسه شناخته می شود.
اگر هدر 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
در سرصفحه پاسخ 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
گنجانده میشود.
- 1pc.glitch.me : نسخه نمایشی کوکی شخص اول
- 3pc.glitch.me : نسخه نمایشی کوکی شخص ثالث
- دستور العمل های کوکی شخص اول
- کوکی ها چیست؟
- کوکی های شخص ثالث چیست؟
- درخواست و پاسخ HTTP
- ابزارهای کوکی
- دموهای کوکی
- استفاده از کوکی های HTTP
- کوکی های SameSite توضیح داده شده است
- OWASP: کوکی ها