קובץ 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
Set-Cookie.
כשקורא צופה בדף שעומד בדרישות האלה – הוא מחובר בחיבור מאובטח וקובץ ה-Cookie נוצר לפני פחות מחודש – הדפדפן שלו ישלח את הכותרת הזו בבקשה שלו:
Cookie: promo_shown=1
Cookie.
אפשר גם להוסיף את קובצי ה-Cookie שזמינים לאתר ולקרוא אותם ב-JavaScript באמצעות
document.cookie. הקצאה ל-document.cookie תיצור קובץ 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"
document.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 ואז לחזור.
אחת התכונות התרבותיות של האינטרנט היא שהוא בדרך כלל פתוח כברירת מחדל. זה חלק מהסיבות לכך שהרבה אנשים יכולים ליצור שם תוכן ואפליקציות משלהם. אבל, השימוש ב-AI גם מעלה כמה חששות בנוגע לאבטחה ולפרטיות. מתקפות של בקשה בין אתרים (CSRF) מסתמכות על העובדה שקובצי Cookie מצורפים לכל בקשה למקור נתון, לא משנה מי יזם את הבקשה. לדוגמה, אם נכנסים לאתר evil.example, האתר יכול להפעיל בקשות לאתר your-blog.example, והדפדפן יצרף את קובצי ה-Cookie המשויכים. אם הבלוג לא בודק בקפידה את הבקשות האלה, evil.example יכול להפעיל פעולות כמו מחיקת פוסטים או הוספת תוכן משלו.
בנוסף, המשתמשים מודעים יותר ויותר לאופן שבו קובצי Cookie יכולים לשמש למעקב אחרי הפעילות שלהם באתרים שונים. עם זאת, עד עכשיו לא הייתה דרך לציין במפורש את הכוונה שלכם לגבי קובץ ה-Cookie. קובץ ה-Cookie של promo_shown צריך להישלח רק בהקשר של צד ראשון, בעוד שקובץ Cookie זמני לווידג'ט שנועד להטמעה באתרים אחרים נמצא שם בכוונה כדי לספק את מצב הכניסה בהקשר של צד שלישי.
אתם יכולים לציין במפורש את הכוונה שלכם לגבי קובץ Cookie על ידי הגדרת מאפיין SameSite מתאים.
כדי לזהות את קובצי ה-Cookie מהדומיין הנוכחי ולהגדיר מאפיינים מתאימים, אפשר לעיין במאמר מתכונים לקובצי Cookie מהדומיין הנוכחי.