שלום-להתראות – הצעה לשימוש ב-Service Workers כדי לשפר את ניהול קובצי ה-cookie באינטרנט

William Denniss
Owen Campbell-Moore

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

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

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

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

הצעה מעשית למעבר לסשנים ארוכים בטוחים באינטרנט

בפוסט הזה מתוארת שיטה חדשה שאנחנו מציעים לקרוא לה: 2-Cookie-Handoff (2CH). אנחנו מקווים להיעזר במאמר הזה כדי לקבל משוב מהקהילה אם הגישה הזו נראית חיובית, ואם כן, כדי לעבוד יחד עם התעשייה על תיעוד השיטות המומלצות לשימוש ב-2CH.

אנשי השירות (service worker) הם טכנולוגיה חדשה שנתמכת על ידי מספר דפדפנים כמו Chrome, Firefox ו-Opera, ובקרוב נוסיף אותם גם ל-Edge. הם מאפשרים ליירט את כל בקשות הרשת מהאתר שלכם דרך נקודת קוד משותפת אצל הלקוח, בלי לשנות את הדפים הקיימים. כך ניתן להגדיר 'עובד 2CH' למשתמשים מחוברים, שיכול ליירט את כל בקשות הרשת שהדף שלכם שולח ולבצע החלפת אסימונים בדיוק כמו באפליקציות לנייד.

ברוב המקרים, בשרת שלך כבר יש נקודת קצה (endpoint) שבה משתמשים אפליקציות לנייד כדי לקבל אסימון חדש לטווח קצר, בדרך כלל באמצעות פרוטוקול OAuth. כדי להפעיל את הדפוס שלמעלה באינטרנט, צריך רק לעדכן את נקודת הקצה (endpoint) הזו כדי להבין מתי קובץ שירות (service worker) שולח קריאה, ואז להחזיר קובץ cookie חדש לטווח קצר של סשן, בפורמט זהה לזה של דפים אחרים באתר כבר מצפים.

אם בשרת שלכם עדיין אין נקודת קצה כזו, הוא יכול ליצור נקודת קצה כזו רק לצורך ניהול הסשנים בדפדפן.

רצף של שני קובצי cookie

דפוס שני האסימונים ב-Service Workers תואם לדפוס OAuth 2.0 בצורה די טובה. אם כבר הרצתם נקודת קצה של אסימון OAuth, סביר להניח שתוכלו להשתמש בו שוב עם Service Workers לאימות אתרים.

יכול להיות שתהיתם מה קורה אם משתמש מבקר בדפדפן שלא תומך ב-Service Workers. אם תטמיעו את הגישה שלמעלה, הם פשוט לא יחוו הבדל וימשיכו ליהנות מסשנים קצרים.

פרסמנו דוגמה של לקוח וקצה עורפי. אנחנו מקווים שתנסה בעצמך ותענה על סקר לגבי ניהול סשנים.