![]() |
התחברות לאתר?
הי,
יש לי טופס התחברות, לצורך הענין נקרא לו login.php בטופס ישנם השדות שם משתמש + סיסמא בלבד. נניח והמשתמש עבר בהצלחה את פרוצדורת הזיהוי, איך ניתן לזכור אותו בכניסות הבאות שלו לאתר? יש את set cookie אבל אני קצת מסתבך עם זה. כמו כן רציתי לדעת איך לSeasion_start יש קשר לכל הסיפור תודה לעוזרים! שב"ש|קורץ| |
אז זה הולך ככה ..
אחרי שהמשתמש עבר את הזיהוי אתה מייצר לו סיישן ככה : PHP קוד:
קוד:
$_POST["user"]אם אתה רוצה לבדוק האם המשתמש התחבר תעשה ככה : PHP קוד:
|
הי ליאור! קודם כל תודה. :)
לדעתך מאובטח יותר להשתמש בסשן מאשר קוקיז? |
כן .. מכיוון שקוקיז כל אחד שיודע להתעסק קצת יכול לערוך אותו .. מהסיבה הזאת צריך לבנות אבטחה בשבילו..
מהצד השני אתה יכול לשלוט על הזמן שהמשתמש יהיה מחובר ... ובסישן אתה לא יכול |
ובהנחה שהמשתמש יצא מהאתר ונכנס אחרי יומיים(מאותו מחשב+דפדפן) - > איך המערכת תזהה אותו? הרי אין לו כלום על המחשב שמעיד על כך (=קוקיז)
אני מקווה שזה לא עפ"י כתובת IP מאחר וזה לא כל כך טוב עבורי. |
שימוש במערכת הסיישנים המובנית ב- PHP לא עונה על התנאי של פותח האשכול: "איך ניתן לזכור אותו בכניסות הבאות שלו לאתר".
המידע הקיים בסיישן תקף כל עוד הגולש לא סגר את הדפדפן/ איפס את הסיישן, ברגע שהגולש יסגור את הדפדפן ויפתח אותו מחדש הוא יקבל מזהה אחר והמערכת כבר לא תקשר אותו למידע מהסיישן הקודם שלו. תלמד להשתמש בעוגיות, זה ידע בסיסי. |
על פי כך אשתמש בקוקיז.
קוד:
set_cookie("cookie_login","admin");תודה חברה. |
ציטוט:
בקיצור משהו שלא יהיה אפשר לגלות בקלות ולשנות את העוגיה ולפרוץ למשתמש |
כדי להתחיל SESSION אתה רושם
PHP קוד:
PHP קוד:
כדי להכניס סשן אתה עושה PHP קוד:
שים לב שסשן לא ישמר אחרי יציאה מהדפדפן \ כיבוי המחשב, אם אתה רוצה לזכור פרטים, תוכל להשתמש בעוגיות (עם הצפנה לכל ערך) או לשמור אייפי במסד ולפי זה לפעול |
ציטוט:
אתה טועה. שוב. וממשיך להטעות אנשים, חבל.. אם אתה לא יודע פשוט אל תנסה לעזור. זיוף Sessions אפשרי בדיוק באותה רמה של זיוף Cookies. אז איך כן תעשה את זה ? - תיצור כפתור CheckBox של "זכור אותי" לדעת אם לשמור את העוגייה במחשב (אולי המשתמש לא משתמש הרגע במחשב שלו?) - בדוק עם המסד נתונים אם המשתמש קיים והסיסמא תקינה במקרה אם כן המשך הלאה. - תגדיר Session במקרה שלא השתמש באופציה "זכור אותי" - במקרה שכן השתמש באופציה "זכור אותי" תגדיר עוגייה - בנוסף את הסיסמא תדאג להצפין באחת מההצפנות המוצעות בPHP לדוגמא: md5, sha1, crc32. נקודות חשובות: שים לב לא להגדיר בצורה הבאה (כמו שהראו לך למעלה): קוד:
$username = $_POST["user"]אתה בודק עם המסד נתונים אם המשתמש קיים והסיסמא שהוזנה נכונה. במקרה של שימוש בצורה הזאת אתה חושף את המסד נתונים שלך להזרקות SQL. על מנת לקרוא עוד על הזרקות SQL: http://www.unixwiz.net/techtips/sql-injection.html אז מה כן אפשר לעשות? השתמש בפונקציה mysql_real_escape_string ! קוד:
$username = mysql_real_escape_string($_POST['user']) |
הייתי רוצה להצטרף לדיון באיך אפשר להצפין עוגייה. כמו שאמרו, אפשר לשחק עם עוגיות זו לא הבעיה. אז מה אפשר לעשות? קודם כל לקחת כמה ערכים מזהים:
מספר משתמש - מספר ייחודי שיש לכל משתמש, זה הערך הראשוני שצריך להיות בעוגייה סיסמה מוצפנת בנוסף - הסיסמה שקיימת במסד, להצפין אותה פעם נוספת ליתר בטחון כתובת אתר - הדומיין של האתר שממנו בוצעה ההתחברות אחרי שביצעת את ההתחברות לאתר ווידאת בוודאות שהוא המשתמש תיצור את העוגייה.ואפשר לקחת ערכים אחרים. את הערכים אתה מזין בעוגייה כשהם מופרדים בתור מסויים, לא משנה איזה. נעבור לחלק השני: כשהמשתמש מגיע לאתר פעם נוספת אתה טוען לתוך מחרוזת את הערך של העוגייה ומשתמש בפונקציה exploe(פונקצייה חזקה מאוד, שימושית ונוחה http://php.net/manual/en/function.explode.php ) ואז אתה טוען מהמסד נתונים את הערכים לפי המספר משתמש ובודק הסיסמה שבמסד, אם אצפין אותה עוד הפעם היא זהה למה שיש בעוגייה? האם הדומיין שיש בעוגייה זהה לדומיין הנוכחי? וכו' וכו' וכו'. במידה וכן המשתמש מחובר, במידה ולא תמחק את העוגייה ותפנה אותו לעמוד ההתחברות. מקווה שעזרתי. |
למה להכניס את הדומיין שממנו בוצעה ההתחברות לתוך העוגיה?
זה לא שאם נכנסת לGoogle ונוצרה שם עוגיה עם אותו שם היא תקלט גם באתר שלך. אני לא מצליח להבין איזה סיבה יש לך להכניס את שם הדומיין, אשמח אם תסביר לי. |
ציטוט:
העוגייה אמורה להכיל שם משתמש וסיסמא מוצפנת בלבד במקרה של שימוש באופציה "זכור אותי". זהו. |
סתם פרמטר שעלה לי בראש בשביל הדוגמא לא משהו מיוחד.
|
ציטוט:
לכן אי אפשר לערוך את הערך של סשיין. מה שכן אפשרי זה לגנוב את המזהה הייחודי של מישהו, אבל בכל מקרה אין למשתמש גישה לערך של הסשיין ואין שום טעם להצפין אותו. מספיק להזין שם את האיידי של המשתמש או שם המשתמש וזהו. כמובן שאם השרת שאתה מאוחסן בו הוא בעל אבטחה אפסית אז זה כבר סיפור אחר ואפשר להשיג גישה למידע, אבל במקרה הנורמלי אין טעם להצפין את הסשיין |
ציטוט:
וזאת הכוונה בזיוף סיישן רציתי לציין שיש דרך כזאת. |
בואו נעשה סדר בעניין יש כאן הרבה אנשים שחושבים שהם משחקים בינגו וזורקים תשובות בתקווה שאולי אחת מהן תהיה נכונה.
המידע הנשמר ב- "סיישן", שמור בעצם בקובץ על השרת שלצורך הדוגמה קוראים לו: sess_1234abcd5678, ה- sess הינו prefix קבוע לכל קבצי הסיישן על השרת שנועד כדי להגדיר שמדובר בקובץ סיישן, ה- 1234abcd5678 הינו המזהה הייחודי של הסיישן, אצל המשתמש תשמר עוגיה בשם כלשהו לדוג' PHPSESSID כאשר הערך שלה הוא המזהה הייחודי של הסיישן, כאמור - 1234abcd1234. כאשר קיימת הצלבה בין המזהה בעוגיה לשם של קובץ סייישן על השרת - דייהנו מדובר בסיישן של אותו משתמש והמידע שייך אליו. ל- "זיוף" סיישן יש 2 דרכים עיקריות - הראשונה היא Session Hijacking, השנייה היא Session Fixation. בראשונה אנחנו צריכים לאתר את המזהה הקיים של משתמש כלשהו - כאשר איתרנו אותו, אנחנו מכניסים אותו אצלנו בעוגיה, משמע משנים את המזהה שלנו למזהה שלו, עכשיו השרת יזהה אותנו כבעלי הסיישן הזה ונוכל לגשת למידע באותו סיישן. בשנייה אנחנו צריכים לקבוע למשתמש כלשהו מזהה ידוע מראש, כאשר קבענו לו את אותו מזהה, נשאר לנו רק לחכות שהוא יבצע איתו את הפעולה הרצויה (התחברות לאתר לדוג'), עכשיו נקבע את אותו מזהה גם לעצמנו - אסטה לה ויסטה. גישה ישירה לקובץ הסיישן אין לנו, ז"א לא נוכל לקרוא ממנו ישירות את הפרטים (במצב אופטימלי כמובן, כאשר השרת והאפליקציה מאובטחים), אבל למעשה אנחנו גם לא צריכים, כי אם לדוג' שמורים בסיישן שם המשתמש והסיסמא - השרת פשוט יזהה אותנו כאותו משתמש ויתחבר אליו, הגענו לאותה מטרה. ועכשיו בוא נחזור לנושא ואני אומר שוב - פשוט תלמד להשתמש בעוגיות, סוף. |
ואיך זה נוגד את הדברים שאמרתי?
הדרך הכי נכונה היא הדרך שציינתי בהודעה הראשונה שלי. שהיא שימוש גם בSession וגם בעוגיות ביחד! זאת הכוונה שלהם! הם לא נוגדים אחד את השני אלא אמורים לעבוד ביחד. ציטוט:
|
לא יצא לי להודות לכם:)
תודה רבה לכולם! |
ציטוט:
אני אישית כשאני בונה עוגיה להתחברות אני מכניס את הID הייחודי של המשתמש ואת הסיסמא שלו מוצפנת בצירוף קוד רנדומלי (כדי למנוע את האפשרות המזערית של MD5 Cracker) ולדעתי זאת שיטה מעולה. |
| כל הזמנים הם GMT +2. הזמן כעת הוא 09:18. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ