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

ויליאם דניס
אוון קמפבל-מור

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

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

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

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

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

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

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

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

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

רצף של העברת שני קובצי cookie

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

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

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