כל קובץ cookie מכיל צמד מפתח/ערך עם מספר מאפיינים לקבוע מתי ואיפה ייעשה שימוש בקובץ ה-cookie הזה.
מבוא למאפיין SameSite
(מוגדר ב-
RFC6265bis)
מאפשרת להצהיר אם קובץ ה-Cookie מוגבל לספק צד ראשון או
בהקשר של אותו אתר. כדאי להבין בדיוק מהו אתר זה כאן.
האתר הוא השילוב של סיומת הדומיין והחלק של הדומיין
לפני כן. לדוגמה, הדומיין www.web.dev
הוא חלק מהאתר web.dev
.
מונח מפתח: אם המשתמש נמצא ב-www.web.dev
ומבקש תמונה מ
static.web.dev
, זו בקשה של אותו אתר.
רשימת הסיומות הציבוריות מגדירה אילו דפים נחשבים דפים
להיות באותו אתר. היא לא תלויה רק בדומיינים ברמה העליונה כמו .com
,
אבל יכול לכלול גם שירותים כמו github.io
. הפעולה הזאת מאפשרת
your-project.github.io
ו-my-project.github.io
כדי להיחשב כאתרים נפרדים.
מונח מפתח: אם המשתמש נמצא ב-your-project.github.io
ומבקש תמונה מ
my-project.github.io
, זוהי בקשה ברשת אחרת.
המאפיין SameSite
משמש להצהרה על שימוש בקובצי Cookie
המאפיין SameSite
בקובץ cookie מספק שלוש דרכים שונות לשלוט
להתנהגות הזאת. אפשר לבחור שלא לציין את המאפיין, או להשתמש
Strict
או Lax
כדי להגביל את קובץ ה-cookie לבקשות של אותו אתר.
אם מגדירים את SameSite
לערך Strict
, אפשר לשלוח את קובץ ה-cookie רק
הקשר צד ראשון כלומר, אם האתר של קובץ ה-cookie תואם לאתר שמוצג
בסרגל הכתובות של הדפדפן. לכן, אם קובץ ה-cookie promo_shown
מוגדר כך:
Set-Cookie: promo_shown=1; SameSite=Strict
כשהמשתמש נמצא באתר, קובץ ה-Cookie נשלח עם הבקשה כמצופה.
עם זאת, אם המשתמש עוקב אחר קישור לאתר אחר מאתר אחר, קובץ ה-cookie
לא נשלחת בבקשה הראשונית הזו.
אפשרות זו מתאימה לקובצי cookie הקשורים לתכונות שתמיד נמצאות מאחורי
ניווט, כמו שינוי סיסמה או ביצוע רכישה, אבל זה גם קורה
מגבילים לקובץ Cookie כמו promo_shown
. אם הקוראים לוחצים על הקישור
באתר, הוא רוצה שקובץ ה-Cookie יישלח כדי שהמערכת תוכל ליישם את ההעדפה שלו.
SameSite=Lax
מאפשר לדפדפן לשלוח את קובץ ה-cookie עם הערכים האלה
ניווטים. לדוגמה, אם אתר אחר מפנה לתוכן של האתר שלך, ב
על ידי שימוש בתמונת החתול שלך והוספת קישור למאמר שלך,
ככה:
<p>Look at this amazing cat!</p>
<img src="https://blog.example/blog/img/amazing-cat.png" />
<p>Read the <a href="https://blog.example/blog/cat.html">article</a>.</p>
עם קובץ cookie שמוגדר ל-Lax
באופן הבא:
Set-Cookie: promo_shown=1; SameSite=Lax
כשהדפדפן מבקש את amazing-cat.png
לבלוג של האדם האחר,
האתר לא שולח את קובץ ה-Cookie. אבל כשהקורא פועל לפי
מקושר אל cat.html
באתר שלך, הבקשה הזו כוללת את קובץ ה-cookie.
מומלץ להשתמש ב-SameSite
בצורה הזו, להגדיר קובצי cookie שמשפיעים על האתר
תצוגה ל-Lax
, וקובצי cookie שקשורים לפעולות משתמש עבור Strict
.
אפשר גם להגדיר את SameSite
לערך None
כדי לציין שרוצים שקובץ ה-cookie יהיה
שנשלח בכל ההקשרים. אם אתה מספק שירות שאתרים אחרים צורכים, כגון
ווידג'טים, תוכן מוטמע, תוכניות שותפים, פרסום או כניסה
יש כמה אתרים, צריך להשתמש בNone
כדי לוודא שהכוונה שלך ברורה.
שינויים בהתנהגות ברירת המחדל ללא SameSite
תמיכה בדפדפן
יש תמיכה במאפיין SameSite
באופן נרחב, אבל לא נעשה בו שימוש נרחב.
בעבר, הגדרת קובצי Cookie ללא SameSite
כברירת מחדל היא שליחתם
כל ההקשרים, וכך המשתמשים פגיעים ל-CSRF ולשימוש לא מכוון
דליפת מידע. לעודד מפתחים לציין את הכוונה שלהם
ולספק למשתמשים חוויה בטוחה יותר, הצעת IETF,
קובצי Cookie טובים יותר באופן מצטבר
נפרט שני שינויים עיקריים:
- קובצי cookie ללא מאפיין
SameSite
נחשבים ל-SameSite=Lax
. - בקובצי cookie עם
SameSite=None
חייבים גם לצייןSecure
, כלומר הם דורשים הקשר מאובטח.
שני השינויים האלה תואמים לאחור לדפדפנים שכוללים
הטמעת את הגרסה הקודמת של המאפיין SameSite
, וגם
דפדפנים שלא תומכים בגרסאות קודמות של SameSite
. הן נועדו
לצמצם הסתמכות על דפדפנים התנהגות ברירת מחדל באמצעות יצירת קובץ Cookie
של התנהגות המשתמשים ושל שימוש מכוון באופן מפורש. כל הלקוחות שלא מזהים
SameSite=None
צריך להתעלם ממנה.
SameSite=Lax
כברירת מחדל
אם שולחים קובץ cookie בלי לציין את המאפיין SameSite
, הדפדפן
המערכת מתייחסת לקובץ ה-cookie הזה כאילו הוא הוגדר ל-SameSite=Lax
. אנחנו עדיין ממליצים
הגדרה מפורשת של SameSite=Lax
כדי לספק חוויית משתמש עקבית יותר
בדפדפנים שונים.
SameSite=None
חייב להיות מאובטח
כשיוצרים קובצי Cookie מאתרים שונים באמצעות SameSite=None
, צריך גם להגדיר אותם
אל Secure
כדי שהדפדפן יקבל אותן:
Set-Cookie: widget_session=abc123; SameSite=None; Secure
כדי לבדוק את ההתנהגות הזו החל מ-Chrome 76, צריך להפעיל
about://flags/#cookies-without-same-site-must-be-secure
, ומ-Firefox 69
על ידי הגדרה של network.cookie.sameSite.noneRequiresSecure
about:config
.
מומלץ גם לעדכן קובצי Cookie קיימים ל-Secure
בהקדם האפשרי.
אם אתם מסתמכים על שירותים שמספקים תוכן של צד שלישי באתר שלכם, עליכם לוודא
ספק השירות מעדכן את קובצי ה-Cookie שלו, ומעדכנים קטעי טקסט או
תלויים באתר שלכם כדי לוודא שהוא משתמש בהתנהגות החדשה.
SameSite
מתכונים לעוגיות
לפרטים נוספים על עדכון קובצי ה-Cookie כדי לטפל בהם בהצלחה
ל-SameSite=None
ולהבדלים בהתנהגות הדפדפן, אפשר לעיין
מאמר המשך, מתכונים לקובצי Cookie של SameSite.
תודה על המשוב והמשוב של Lily Chen, Malte Ubl, Mike מערב, רוב דודסון, תום סטיינר וויוק סקהר.
תמונה ראשית (Hero) של קובץ cookie מאת פיל-ריין פריסק על ביטול הפתיחה