با نحوه تنظیم کوکی های شخص اول برای اطمینان از امنیت، سازگاری بین مرورگرها و به حداقل رساندن احتمال شکستگی پس از حذف تدریجی کوکی های شخص ثالث آشنا شوید.
کوکی ها می توانند شخص اول یا شخص ثالث نسبت به زمینه کاربر باشند. بسته به اینکه کاربر در آن زمان در کدام سایت باشد. اگر دامنه و طرح قابل ثبت کوکی با صفحه سطح بالای فعلی، یعنی آنچه در نوار آدرس مرورگر نمایش داده می شود مطابقت داشته باشد، کوکی از همان سایت صفحه در نظر گرفته می شود و به طور کلی به عنوان کوکی شخص اول شناخته می شود. .
کوکیهای دامنههایی غیر از سایت فعلی معمولاً کوکیهای شخص ثالث نامیده میشوند.
دستور العمل خوب کوکی های شخص اول
اگر کوکیای که تنظیم میکنید در بین سایتها استفاده نمیشود، برای مثال، برای مدیریت جلسات در سایت شما استفاده میشود و هرگز در یک 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;