קובץ 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: promo_shown=1
אפשר גם להוסיף ולקרוא את קובצי ה-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"
אם תנסו לעשות זאת באתרים פופולריים, תבחינו שרובם מגדירים הרבה יותר משלושה קובצי cookie. ברוב המקרים, קובצי ה-Cookie האלה נשלחים בכל בקשה לדומיין הזה, ויש לכך כמה השלכות. רוחב הפס להעלאה הוא לרוב מוגבל יותר מרוחב הפס להורדה של המשתמשים, כך שהעלות הכוללת של כל הבקשות היוצאות מוסיפה עיכוב לזמן לביט הראשון. מומלץ להשתמש במספר קטן של קובצי cookie ובקובצי cookie בגודל קטן. מומלץ להשתמש במאפיין Max-Age
כדי לוודא שקובצי cookie לא נשארים יותר מדי זמן.
מהם קובצי cookie מהדומיין הנוכחי של בעל התוכן הדיגיטלי וקובצי cookie של צד שלישי?
אם תחזור לאותה רשימה של אתרים שבה צפית קודם, סביר להניח שתבחין שקובצי cookie נמצאים במגוון דומיינים, ולא רק בדומיין שבו נמצאת כרגע. קובצי cookie שתואמים לדומיין של האתר הנוכחי, כלומר לדומיין שמוצג בסרגל הכתובות של הדפדפן, נקראים קובצי cookie מהדומיין הנוכחי. באופן דומה, קובצי Cookie מדומיינים שאינם הדומיין של האתר הנוכחי נקראים קובצי Cookie של צד שלישי. זוהי תווית יחסית, ולא תווית מוחלטת. אותו קובץ cookie יכול להיות של צד ראשון או של צד שלישי, בהתאם לאתר שבו המשתמש נמצא באותו זמן.
בהמשך לדוגמה שלמעלה, נניח שאחד מהפוסטים בבלוג שלכם כולל תמונה של חתול מדהים במיוחד, והוא מתארח בכתובת /blog/img/amazing-cat.png
. התמונה כל כך מדהימה שאדם אחר משתמש בה ישירות באתר שלו. אם מבקר ביקר בבלוג שלכם ויש לו את קובץ ה-cookie promo_shown
, כשהוא יראה את amazing-cat.png
באתר של האדם השני, קובץ ה-cookie ישלח בבקשה לתמונה. הדבר לא שימושי במיוחד לאף אחד, כי promo_shown
לא משמש לשום דבר באתר של האדם השני, אלא רק מוסיף עלות לטיפול בבקשה.
אם זהו אפקט לא מכוון, למה כדאי לעשות זאת? המנגנון הזה מאפשר לאתרים לשמור את המצב שלהם כשמשתמשים בהם בהקשר של צד שלישי. לדוגמה, אם תטמיעו באתר סרטון YouTube, המבקרים יראו בנגן את האפשרות 'לצפייה בהמשך'. אם המבקר כבר מחובר ל-YouTube, הסשן הזה זמין בנגן המוטמע באמצעות קובץ cookie של צד שלישי. כלומר, הלחצן 'לצפייה בהמשך' ישמור את הסרטון בבת אחת, במקום לבקש מהמבקר להיכנס לחשבון או להוציא אותו מהדף שלכם ולהחזיר אותו ל-YouTube.
אחד המאפיינים התרבותיים של האינטרנט הוא שהוא בדרך כלל פתוח כברירת מחדל. זהו אחד מהגורמים שאפשרו לאנשים רבים ליצור תוכן ואפליקציות משלהם. עם זאת, הדבר גרם גם למספר בעיות אבטחה ופרטיות. התקפות של זיוף בקשות בין אתרים (CSRF) מבוססות על העובדה שקובצי cookie מצורפים לכל בקשה למקור נתון, לא משנה מי יזם את הבקשה. לדוגמה, אם נכנסים לאתר evil.example
, הוא יכול להפעיל בקשות ל-your-blog.example
, והדפדפן ישמח לצרף את קובצי ה-cookie המשויכים. אם לא תבדקו היטב את האופן שבו הבקשות האלה מאומתות בבלוג, evil.example
עלול לגרום לפעולות כמו מחיקת פוסטים או הוספת תוכן משלו.
בנוסף, המשתמשים הולכים ומבינים יותר איך אפשר להשתמש בקובצי cookie כדי לעקוב אחרי הפעילות שלהם בכמה אתרים. עם זאת, עד עכשיו לא הייתה דרך להצהיר באופן מפורש על הכוונה שלכם לגבי קובץ ה-cookie. קובץ ה-cookie promo_shown
צריך להישלח רק בהקשר של הדומיין שלכם, בעוד שקובץ cookie של סשן לווידג'ט שנועד להטמעה באתרים אחרים נועד בכוונה לספק את מצב הכניסה בהקשר של צד שלישי.
כדי לציין במפורש את הכוונה שלכם לגבי קובץ cookie, אתם יכולים להגדיר את מאפיין SameSite המתאים.
כדי לזהות את קובצי ה-cookie מהדומיין הנוכחי ולהגדיר מאפיינים מתאימים, כדאי לעיין במאמר מתכונים לקובצי cookie מהדומיין הנוכחי.