בואו נעשה סדר בעניין יש כאן הרבה אנשים שחושבים שהם משחקים בינגו וזורקים תשובות בתקווה שאולי אחת מהן תהיה נכונה.
המידע הנשמר ב- "סיישן", שמור בעצם בקובץ על השרת שלצורך הדוגמה קוראים לו: sess_1234abcd5678,
ה- sess הינו prefix קבוע לכל קבצי הסיישן על השרת שנועד כדי להגדיר שמדובר בקובץ סיישן,
ה- 1234abcd5678 הינו המזהה הייחודי של הסיישן,
אצל המשתמש תשמר עוגיה בשם כלשהו לדוג' PHPSESSID כאשר הערך שלה הוא המזהה הייחודי של הסיישן, כאמור - 1234abcd1234.
כאשר קיימת הצלבה בין המזהה בעוגיה לשם של קובץ סייישן על השרת - דייהנו מדובר בסיישן של אותו משתמש והמידע שייך אליו.
ל- "זיוף" סיישן יש 2 דרכים עיקריות -
הראשונה היא Session Hijacking, השנייה היא Session Fixation.
בראשונה אנחנו צריכים לאתר את המזהה הקיים של משתמש כלשהו -
כאשר איתרנו אותו, אנחנו מכניסים אותו אצלנו בעוגיה, משמע משנים את המזהה שלנו למזהה שלו,
עכשיו השרת יזהה אותנו כבעלי הסיישן הזה ונוכל לגשת למידע באותו סיישן.
בשנייה אנחנו צריכים לקבוע למשתמש כלשהו מזהה ידוע מראש,
כאשר קבענו לו את אותו מזהה, נשאר לנו רק לחכות שהוא יבצע איתו את הפעולה הרצויה (התחברות לאתר לדוג'),
עכשיו נקבע את אותו מזהה גם לעצמנו - אסטה לה ויסטה.
גישה ישירה לקובץ הסיישן אין לנו, ז"א לא נוכל לקרוא ממנו ישירות את הפרטים (במצב אופטימלי כמובן, כאשר השרת והאפליקציה מאובטחים),
אבל למעשה אנחנו גם לא צריכים, כי אם לדוג' שמורים בסיישן שם המשתמש והסיסמא -
השרת פשוט יזהה אותנו כאותו משתמש ויתחבר אליו, הגענו לאותה מטרה.
ועכשיו בוא נחזור לנושא ואני אומר שוב -
פשוט תלמד להשתמש בעוגיות, סוף.
|