הסבר על קובצי cookie

קובץ cookie הוא קטע של נתונים השמורים בדפדפן ומשמש לשמירת המצב ומידע אחר שנדרש לאתר כדי להפעיל את התכונות שלו.

קובץ cookie הוא קובץ קטן שאתרים מאחסנים במחשב של המשתמשים שלהם, והמידע שהוא מאחסן עובר בין הדפדפן לאתר.

כל קובץ cookie הוא צמד מפתח/ערך עם מספר מאפיינים שקובעים מתי ואיפה ייעשה שימוש בקובץ ה-cookie הזה. המאפיינים האלה משמשים להגדרת תאריכי תפוגה, או כדי לציין שיש לשלוח את קובץ ה-cookie רק באמצעות HTTPS. ניתן להגדיר קובץ cookie בכותרת HTTP או דרך ממשק JavaScript.

קובצי cookie הם אחת מהשיטות הזמינות להוספת מצב קבוע לאתרים. עם השנים, היכולות שלהם גדלו והתפתחו, אבל השאירה את הפלטפורמה עם בעיות מדור קודם בעייתיות. כדי לטפל בבעיה הזו, דפדפנים (כולל Chrome, Firefox ו-Edge) משנים את אופן הפעולה שלהם כדי לאכוף הגדרות ברירת מחדל נוספות לשמירה על הפרטיות.

קובצי ה-Cookie בפעולה

נניח שיש לך בלוג שבו ברצונך להציג את ההודעה "מה חדש" קידום אל משתמשים. המשתמשים יכולים לסגור את המבצע ולאחר מכן לא יראו אותו שוב לזמן מה. אפשר לשמור את ההעדפה הזו בקובץ cookie, ולהגדיר את התוקף שלה למשך חודש (2,600,000 שניות), ולשלוח אותו רק באמצעות HTTPS. הכותרת הזו תיראה כך הזה:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
שלושה קובצי cookie נשלחים לדפדפן בתגובה בתגובה
שרתים הגדירו קובצי cookie באמצעות הכותרת Set-Cookie.

כשהקוראים צופים בדף שעומד בדרישות האלה — הם מאובטח וקובץ ה-Cookie נוצר לפני פחות מחודש - הדפדפן המערכת תשלח את הכותרת הזו בבקשה שלה:

Cookie: promo_shown=1
שלושה קובצי cookie נשלחים מדפדפן לשרת בבקשה
הדפדפן שולח חזרה קובצי cookie בכותרת Cookie.

אפשר גם להוסיף ולקרוא את קובצי ה-Cookie שזמינים לאתר ב-JavaScript באמצעות document.cookie הגשה של מטלה ל-document.cookie תיצור או לשנות קובץ cookie עם המפתח הזה. לדוגמה, אפשר לנסות את הפעולות הבאות לוח JavaScript של הדפדפן:

→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"

קריאה של document.cookie תייצר פלט של כל קובצי ה-cookie שניתן לגשת אליהם כרגע את ההקשר, כאשר כל קובץ cookie מופרד באמצעות נקודה ופסיק:

→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
JavaScript ניגש לקובצי cookie בתוך הדפדפן
JavaScript יכול לגשת לקובצי cookie באמצעות document.cookie.

אם תנסו את האפשרות הזו במבחר אתרים פופולריים, תבחינו שרובם הם הגדירו באופן משמעותי יותר משלושה קובצי cookie בלבד. ברוב המקרים, קובצי Cookie נשלחים בכל בקשה יחידה לאותו דומיין, השלכות. לרוב רוחב הפס של ההעלאה מוגבל יותר מרוחב הפס להורדה המשתמשים, כך שהתקורה על כל הבקשות היוצאות גורמת לעיכוב בזמן בייט ראשון. מומלץ לנהוג בעקביות במספר ובגודל של קובצי ה-Cookie שאתם מגדירים. יצרן שימוש במאפיין Max-Age כדי להבטיח שקובצי Cookie לא נמצאים יותר מהנדרש.

מהם קובצי Cookie של צד ראשון ושל צד שלישי?

אם חוזרים לאותה מבחר אתרים שצפיתם בהם קודם, שככל הנראה הבחינו בכך שהיו קובצי Cookie קיימים עבור מגוון של דומיינים, רק לגבי האתר שבו אתם מבקרים עכשיו. קובצי cookie שתואמים לדומיין של מהאתר הנוכחי, כלומר מה שמוצג בסרגל הכתובות של הדפדפן, מופנים כקובצי Cookie של אינטראקציה ישירה (First-Party). באופן דומה, קובצי cookie מדומיינים שונים האתר הנוכחי מכונים קובצי Cookie של צד שלישי. נתון זה אינו מוחלט תווית, אבל היא ביחס להקשר של המשתמש. אותו קובץ Cookie יכול להיות צד ראשון או צד שלישי, בהתאם לאתר שבו המשתמש נמצא באותו זמן.

שלושה קובצי cookie שנשלחים לדפדפן מבקשות שונות באותו הדף
קובצי cookie עשויים להגיע ממגוון דומיינים שונים בדף אחד.

בהמשך לדוגמה שלמעלה, נניח שבאחד מהפוסטים שלך בבלוג יש תמונה של חתול מדהים במיוחד, והיא מתארחת /blog/img/amazing-cat.png בגלל שזו תמונה כל כך מדהימה, מישהו אחר משתמשים בו ישירות באתר שלהם. אם מבקר ביקר בבלוג שלכם ויש לו קובץ Cookie אחד (promo_shown), ולאחר מכן כשהוא יצפה ב-amazing-cat.png בצד השני באתר של המשתמש שישלח לו בקשה לתמונה. הזה לא מועילה במיוחד לאף אחד, כי promo_shown לא משמש לשום דבר. באתר של האדם הזה, מדובר רק בהוספת תקורה לבקשה.

אם זו השפעה לא מכוונת, למה כדאי לעשות זאת? זהו זה מנגנון שמאפשר לאתרים לשמור על המצב כאשר משתמשים בהם בהקשר של צד שלישי. לדוגמה, אם תטמיעו סרטון YouTube באתר שלכם, מבקרים יראו את הקישור 'לצפייה בהמשך' האפשרות בנגן. אם המבקר שלכם כבר נכנסתם ל-YouTube, הסשן הזה זמין בנגן מוטמע באמצעות קובץ Cookie של צד שלישי — כלומר, "לצפייה בהמשך" הלחצן פשוט לשמור את הסרטון בבת אחת במקום לבקש מהם להיכנס או שצריך לנווט אותם אל מחוץ לדף ולחזור אל YouTube.

אותו קובץ cookie נשלח בשלושה הקשרים שונים
קובץ cookie בהקשר של צד שלישי נשלח כשמבקרים בדפים שונים.

אחד מהנכסים התרבותיים של האינטרנט הוא שבדרך כלל הוא פתוח על ידי כברירת מחדל. זה חלק ממה שמאפשר לאנשים רבים כל כך ליצור את התוכן והאפליקציות שלהם. עם זאת, הדבר גרם גם בנושאי אבטחה ופרטיות. התקפות Cross-Site Request Forgery (CSRF) מסתמכות על העובדה שקובצי cookie מצורפים לכל בקשה למקור נתון, ללא קשר מי שיוזם את הבקשה. לדוגמה, אם תבקרי בכתובת evil.example, היא תוכל תפעיל בקשות אל your-blog.example, והדפדפן שלך יצרף בשמחה קובצי ה-Cookie המשויכים. אם הבלוג שלכם לא מקפידים על האופן שבו הוא מאמת אותן בקשות ולכן evil.example עשויות להפעיל פעולות כמו מחיקת פוסטים או הוספה את התוכן שלהם.

בנוסף, המשתמשים מודעים יותר לאופן שבו ניתן להשתמש בקובצי Cookie כדי לעקוב פעילות באתרים מרובים. עם זאת, עד עכשיו לא הייתה דרך לציין במפורש את הכוונה שלכם בקובץ ה-cookie. קובץ ה-cookie promo_shown שלך יישלחו רק בהקשר של צד ראשון, ואילו קובץ Cookie של סשן עבור ווידג'ט. אמור להיות מוטמע באתרים אחרים, במצב מחובר לחשבון של צד שלישי.

אפשר להצהיר באופן מפורש על הכוונה שלכם בקובץ cookie, על ידי הגדרת מאפיין SameSite המתאים.

כדי לזהות את קובצי ה-Cookie מהדומיין הנוכחי ולהגדיר מאפיינים מתאימים, כדאי לעיין במתכונים לקובצי Cookie מהדומיין הנוכחי.