دستور العمل های کوکی شخص اول

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

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

کوکی‌های دامنه‌هایی غیر از سایت فعلی معمولاً کوکی‌های شخص ثالث نامیده می‌شوند.

اگر کوکی‌ای که تنظیم می‌کنید در بین سایت‌ها استفاده نمی‌شود، برای مثال، برای مدیریت جلسات در سایت شما استفاده می‌شود و هرگز در یک iframe بین سایتی استفاده نمی‌شود، آن کوکی همیشه در زمینه شخص اول استفاده می‌شود.

به‌طور پیش‌فرض، کوکی‌ها را می‌توان در بین سایت‌ها به اشتراک گذاشت، با جاوا اسکریپت به آن دسترسی پیدا کرد و از طریق اتصالات HTTP ارسال شد، که با برخی از خطرات حریم خصوصی و امنیتی همراه است. در حالی که کار مداومی برای بهبود رفتار پیش‌فرض وجود دارد، از طریق Privacy Sandbox و سایر پیشنهادها مانند کوکی‌های محدود به مبدأ ، امروز می‌توانید با تنظیم ویژگی‌های اضافی روی کوکی‌های خود کارهای زیادی انجام دهید.

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

دستور غذا

Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;

Host یک پیشوند اختیاری است که برخی از ویژگی ها را اجباری می کند و برخی دیگر را ممنوع می کند:

  • Secure باید حضور داشته باشد
  • Domain باید حذف شود
  • Path باید /

با اضافه شدن Host ، می توانید برای بررسی اینکه آیا این ویژگی ها مطابق با قوانین __Host تنظیم شده اند یا خیر، به مرورگر اعتماد کنید و در غیر این صورت، کوکی را رد کنید.

Secure از کوکی ها در برابر سرقت در شبکه های ناامن محافظت می کند زیرا فقط امکان ارسال کوکی ها را از طریق اتصالات HTTPS فراهم می کند. اگر سایت خود را به طور کامل به HTTPS منتقل نکرده اید، آن را در اولویت قرار دهید.

ویژگی Domain مشخص می کند که کدام میزبان ها می توانند یک کوکی دریافت کنند. حذف آن، کوکی را به میزبان سند فعلی محدود می‌کند، به استثنای دامنه‌های فرعی: کوکی برای example.com در هر درخواستی به example.com ارسال می‌شود، اما در درخواست‌هایی به images.example.com ارسال نمی‌شود. اگر برنامه‌های مختلفی دارید که در زیر دامنه‌های مختلف اجرا می‌شوند، این خطر احتمال ورود یک دامنه به دامنه‌های دیگر را کاهش می‌دهد.

Path مسیری را نشان می دهد که باید در URL درخواستی وجود داشته باشد تا مرورگر بتواند هدر Cookie را ارسال کند. تنظیم Path=/ به این معنی است که کوکی به تمام مسیرهای URL در آن دامنه ارسال می شود. ترکیب no Domain و Path=/ باعث می‌شود که کوکی تا حد امکان به مبدأ متصل شود، بنابراین رفتار مشابهی با سایر حافظه‌های سمت سرویس گیرنده مانند LocalStorage دارد - هیچ ابهامی وجود ندارد که example.com/a ممکن است مقادیر متفاوتی را برای example.com/b دریافت کند. example.com/b .

ویژگی HttpOnly با محدود کردن دسترسی جاوا اسکریپت، محافظت در برابر اسکریپت های شخص ثالث مخرب در سایت های شما را اضافه می کند. این اجازه می دهد تا یک کوکی فقط در هدرهای درخواست ارسال شود و آنها را با استفاده از document.cookie برای جاوا اسکریپت غیر قابل دسترس می کند.

Max-Age عمر یک کوکی را محدود می کند زیرا جلسات مرورگر می توانند مدت زمان زیادی طول بکشند و نمی خواهید کوکی های قدیمی برای همیشه در اطراف باشند. برای کوکی‌های کوتاه‌مدت، مانند جلسات کاربر یا حتی موارد کوتاه‌تر مانند توکن‌ها برای ارسال فرم، خوب است. Max-Age بر حسب ثانیه تعریف شده است و در مثال قبلی روی 7776000 ثانیه تنظیم شده است که 90 روز است. این یک پیش فرض معقول است که می توانید بسته به مورد استفاده خود آن را تغییر دهید.

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

برای کسب اطلاعات بیشتر در مورد ویژگی‌های مختلف کوکی، مستندات Set-Cookie در MDN را بررسی کنید.

اگر سایتی با زیر دامنه دارید و می خواهید یک جلسه در همه آنها داشته باشید، پیشوند Host می تواند بسیار محدود کننده باشد. به‌عنوان مثال news.site می‌تواند زیر دامنه‌هایی برای موضوعاتی مانند finance.news.site و sport.news.site داشته باشد و شما می‌خواهید که یک جلسه کاربر برای همه آن‌ها داشته باشید. در این صورت به جای __Host از پیشوند __Secure استفاده کنید و Domain مشخص کنید.

دستور غذا

Set-Cookie:
__Secure-cookie-name=cookie-value;
Secure;
Domain=news.site;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;

Secure یک پیشوند اختیاری است که الزامات کمتری را نسبت به Host بیان می کند: فقط نیاز دارد که کوکی با ویژگی Secure تنظیم شود.

در حالی که کوکی‌های SameSite=Lax در درخواست‌های فرعی بین سایتی ارسال نمی‌شوند (به عنوان مثال، هنگام بارگیری تصاویر جاسازی شده یا iframe در یک سایت شخص ثالث)، زمانی که کاربر در حال پیمایش به سایت اصلی است (به عنوان مثال، هنگام دنبال کردن یک سایت) ارسال می‌شود. پیوند از یک سایت دیگر).

می‌توانید دسترسی به کوکی‌ها را بیشتر محدود کنید و ارسال آنها را به همراه درخواست‌هایی که از وب‌سایت‌های شخص ثالث آغاز می‌شوند با SameSite=Strict ممنوع کنید. این زمانی مفید است که کوکی‌های مربوط به عملکردی دارید که همیشه پشت یک پیمایش اولیه مانند تغییر رمز عبور یا خرید وجود دارد.

دستور غذا

Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Strict;
،

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

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

کوکی‌های دامنه‌هایی غیر از سایت فعلی معمولاً کوکی‌های شخص ثالث نامیده می‌شوند.

اگر کوکی‌ای که تنظیم می‌کنید در بین سایت‌ها استفاده نمی‌شود، برای مثال، برای مدیریت جلسات در سایت شما استفاده می‌شود و هرگز در یک iframe بین سایتی استفاده نمی‌شود، آن کوکی همیشه در زمینه شخص اول استفاده می‌شود.

به‌طور پیش‌فرض، کوکی‌ها را می‌توان در بین سایت‌ها به اشتراک گذاشت، با جاوا اسکریپت به آن دسترسی پیدا کرد و از طریق اتصالات HTTP ارسال شد، که با برخی از خطرات حریم خصوصی و امنیتی همراه است. در حالی که کار مداومی برای بهبود رفتار پیش‌فرض وجود دارد، از طریق Privacy Sandbox و سایر پیشنهادها مانند کوکی‌های محدود به مبدأ ، امروز می‌توانید با تنظیم ویژگی‌های اضافی روی کوکی‌های خود کارهای زیادی انجام دهید.

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

دستور غذا

Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;

Host یک پیشوند اختیاری است که برخی از ویژگی ها را اجباری می کند و برخی دیگر را ممنوع می کند:

  • Secure باید حضور داشته باشد
  • Domain باید حذف شود
  • Path باید /

با اضافه شدن Host ، می توانید برای بررسی اینکه آیا این ویژگی ها مطابق با قوانین __Host تنظیم شده اند یا خیر، به مرورگر اعتماد کنید و در غیر این صورت، کوکی را رد کنید.

Secure از کوکی ها در برابر سرقت در شبکه های ناامن محافظت می کند زیرا فقط امکان ارسال کوکی ها را از طریق اتصالات HTTPS فراهم می کند. اگر سایت خود را به طور کامل به HTTPS منتقل نکرده اید، آن را در اولویت قرار دهید.

ویژگی Domain مشخص می کند که کدام میزبان ها می توانند یک کوکی دریافت کنند. حذف آن، کوکی را به میزبان سند فعلی محدود می‌کند، به استثنای دامنه‌های فرعی: کوکی برای example.com در هر درخواستی به example.com ارسال می‌شود، اما در درخواست‌هایی به images.example.com ارسال نمی‌شود. اگر برنامه‌های مختلفی دارید که در زیر دامنه‌های مختلف اجرا می‌شوند، این خطر احتمال ورود یک دامنه به دامنه‌های دیگر را کاهش می‌دهد.

Path مسیری را نشان می دهد که باید در URL درخواستی وجود داشته باشد تا مرورگر بتواند هدر Cookie را ارسال کند. تنظیم Path=/ به این معنی است که کوکی به تمام مسیرهای URL در آن دامنه ارسال می شود. ترکیب no Domain و Path=/ باعث می‌شود که کوکی تا حد امکان به مبدأ متصل شود، بنابراین رفتار مشابهی با سایر حافظه‌های سمت سرویس گیرنده مانند LocalStorage دارد - هیچ ابهامی وجود ندارد که example.com/a ممکن است مقادیر متفاوتی را برای example.com/b دریافت کند. example.com/b .

ویژگی HttpOnly با محدود کردن دسترسی جاوا اسکریپت، محافظت در برابر اسکریپت های شخص ثالث مخرب در سایت های شما را اضافه می کند. این اجازه می دهد تا یک کوکی فقط در هدرهای درخواست ارسال شود و آنها را با استفاده از document.cookie برای جاوا اسکریپت غیر قابل دسترس می کند.

Max-Age عمر یک کوکی را محدود می کند زیرا جلسات مرورگر می توانند مدت زمان زیادی طول بکشند و نمی خواهید کوکی های قدیمی برای همیشه در اطراف باشند. برای کوکی‌های کوتاه‌مدت، مانند جلسات کاربر یا حتی موارد کوتاه‌تر مانند توکن‌ها برای ارسال فرم، خوب است. Max-Age بر حسب ثانیه تعریف شده است و در مثال قبلی روی 7776000 ثانیه تنظیم شده است که 90 روز است. این یک پیش فرض معقول است که می توانید بسته به مورد استفاده خود آن را تغییر دهید.

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

برای کسب اطلاعات بیشتر در مورد ویژگی‌های مختلف کوکی، مستندات Set-Cookie در MDN را بررسی کنید.

اگر سایتی با زیر دامنه دارید و می خواهید یک جلسه در همه آنها داشته باشید، پیشوند Host می تواند بسیار محدود کننده باشد. به‌عنوان مثال news.site می‌تواند زیر دامنه‌هایی برای موضوعاتی مانند finance.news.site و sport.news.site داشته باشد و شما می‌خواهید که یک جلسه کاربر برای همه آن‌ها داشته باشید. در این صورت به جای __Host از پیشوند __Secure استفاده کنید و Domain مشخص کنید.

دستور غذا

Set-Cookie:
__Secure-cookie-name=cookie-value;
Secure;
Domain=news.site;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;

Secure یک پیشوند اختیاری است که الزامات کمتری را نسبت به Host بیان می کند: فقط نیاز دارد که کوکی با ویژگی Secure تنظیم شود.

در حالی که کوکی‌های SameSite=Lax در درخواست‌های فرعی بین سایتی ارسال نمی‌شوند (به عنوان مثال، هنگام بارگیری تصاویر جاسازی شده یا iframe در یک سایت شخص ثالث)، زمانی که کاربر در حال پیمایش به سایت اصلی است (به عنوان مثال، هنگام دنبال کردن یک سایت) ارسال می‌شود. پیوند از یک سایت دیگر).

می‌توانید دسترسی به کوکی‌ها را بیشتر محدود کنید و ارسال آنها را به همراه درخواست‌هایی که از وب‌سایت‌های شخص ثالث آغاز می‌شوند با SameSite=Strict ممنوع کنید. این زمانی مفید است که کوکی‌های مربوط به عملکردی دارید که همیشه پشت یک پیمایش اولیه مانند تغییر رمز عبور یا خرید وجود دارد.

دستور غذا

Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Strict;