• בלוג
  • מימוש זכור אותי באתרים

מימוש זכור אותי באתרים

18/01/2019

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

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

1. מה נרצה לבנות

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

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

לכן בבניית פיצ'ר זכור אותי נרצה לתת למשתמשים שלנו:

  1. אפשרות להישאר מחוברים לזמן ארוך.

  2. אפשרות לנתק חיבורים ישנים- למשל כשמשתמש מחליף סיסמא אנחנו חושבים שזה יהיה רעיון טוב למחוק את כל הזכור אותים שלו.

  3. אפשרות לשלוט בכמה מכשירים יכולים להיות מחוברים במצב "זכור אותי"- למשל אנחנו חושבים שאם לחצתם "זכור אותי" על מחשב בסיפריה ואז הגעתם הביתה והתחברתם שוב לאתר במצב "זכור אותי", נשמח לזהות את זה אוטומטית ולמחוק את ההתחברות מהמחשב בסיפריה.

2. איך בונים את זה

מימוש טוב למנגנון זכור אותי יהיה בנוי מהסעיפים הבאים:

  1. בבסיס הנתונים נוסיף עמודה בשם rememberme_token שתחזיק token אקראי. במערכת יהיו לנו פונקציות לאפס את הטוקן הזה או להגריל חדש.

  2. כשמשתמש מתחבר ובוחר "זכור אותי" נייצר rememberme_token חדש ונשלח את הטוקן הזה למשתמש כדי שיישמר ב Cookie. על הדרך נשלח גם את תאריך יצירת הטוקן ונשמור אותו באותה העוגיה ונחתום על הצירוף.

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

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