![]() |
אבטחת עוגיות
שלום,
מה הדרך הבטוחה והיעילה ביותר לאמת נתוני משתמש (או שאולי נכון יותר לומר לאבטח עוגיות?..)? אני רוצה שמשתמש שמתחבר לאתר שלי, יוכל לחזור לאתר לאחר זמן מה והמערכת תזהה אותו למרות שיצא ממנו כבר. האם כדאי להשתמש בעוגיות? אולי ב SESSIONS? אולי לשלב? אשמח לקרוא את דעתכם בנושא. בנוסף אשמח לקבל קישורים למקורות מידע בנושא. תודה, איגור |
עוגיות במקרה הזה זה הדבר הכי טוב כי סשנים נמחקים אחרי היציאה מהעמוד אבל העוגיות נשארות על שהמשתמש לא מוחק אותם ז"א שזה הכי בטוח בישבילך כרגע אתה יכול להשתמש גם באייפי כאילו לשמור אותו אצלך אם בא לך
|
ציטוט:
השאלה היא איך לבצע את זה בצורה כזו שהעוגיה תהיה מאובטחת ושהסיכוי לגנוב אותה יהיה כמה שיותר נמוך? |
לוח בקרה של משהו שקשור בכסף?
סשנס, בלי שום היסוס. סשנס שנשמרים למקסימום שעתיים + IP = מצויין. במקרה שזה לא קשור למשהו -ממש- רציני, תשתמש בקוקיס עם ID + הסיסמה המוצפנת בהצפנה חד צדדית + מספר התחברות. אם אתה ממש רוצה, אתה מוזמן להצפין את זה 4 פעמים ב-MD5, במקום רק פעם אחת, וכך לבדוק WHERE id = 'Cookie ID', ולבדוק האם ה-md5(md5(md5($row['pass))) שווה לקוקיס password. למרות שאולי זה יאריך את הטעינה של הדף במאית שניה. ז"א, שברגע שהוא מתחבר, נוספת שורה למסד עם ID, סיסמה, ו-IP, וכמובן-מספר רנדומלי, שנקרא לו "מספר התחברות". כל פעם זה משווה את הכל, זה דמוי סשן. |
אם אתה לא רוצה שיגנבו למשתמשים שלך עוגיות, אל תשאיר מקום לXSS.
עריכה: אני רואה אני לא קשור :P תשמור בקוקי userName + MD5. MasterT, למה לו לשמור מספר התחברויות? או שזה מספר התחברות? [מה זה?] |
אני מצאתי דרך ממש נחמדה:
כל פעם שאתה מתחבר והאפשרות של לזכור מסומנת אז נכנסת למסד שורה, השורה כוללת 4 ערכים: ID, שם משתמש, סיסמא ו string ה string זה אותיות רנדומאליות שנוצרות בהתחברות ,את ה string שיצא אתה מכניס לעוגיה. בהתחברות, אם העוגיה קיימת תשלוף את ה string ותבדוק אם הוא קיים במסד. אם לא, תציג התחברות. אם כן, תשלוף את השם משתמש והסיסמא שבמסד ותאמת אותם. אם הם לא נכונים (מה שרוב הסיכוים שהם כן נכונים) תציג התחברות. אם הם כן נכונים סיימנו ואתה יכול להרשות למשתמש להכנס לפאנל. * ה string כולל אותיות גדולות, קטנות, סימנים ומספרים. |
ציטוט:
מה הרעיון מאחורי זה? תמיד הנתונים יהיו זהים.. תמיד המשתמש יהיה רשאי להכנס... ולא עשינו בזה כלום.. |
דווקא לא....,
זה בערך מה שאני אמרתי. זה דמוי סשן. |
אני אשאל את השאלה שלי אחרת,
איך אתם [בעלי האתרים] מאמתים את פרטי המשתמשים שלכם? |
ציטוט:
סטרינג רנדאומלי אמרתי. |
ציטוט:
|
כל התחברות, זה מוחק את כל הסשנס שהם יותר מ-X זמן+אם הסשן פג תוקפו, זה מנתק אותך.
|
ציטוט:
בשביל זה צריך להוסיף עוד שדה שבו יהיה מתי השורה נוספה. |
זה סתם יקח שאילתות מיותרות כל כמה זמן לעשות את זה-ואם האתר לא פעיל?
עדיף בכל התחברות, זה מוחק את כל מה שפג תוקף. |
ציטוט:
|
אוקי תודה,
ברשותכם אני אנסה לסכם: בבסיס הנתונים שלי תהיה טבלה עם שם משתמש, סיסמא ושדה נוסף של סטרינג שיווצר בזמן התחברות משתמש.
נשמע טוב :) יש סוג של יתרון, אולי חסרון והוא כאשר המשתמש ינסה להתחבר במחשב אחר - הסטרינג יתעדכן, וכאשר יחזור לאתר שוב במחשב הראשון - יצטרך להתחבר מחדש. |
ציטוט:
|
בהוספה של המשתמש למסד, אתה יוצר מחרוזת רנדומלית כלשהי (רצוי להצפין אותה עם md5)
ובהתחברות של המשתמש אתה בודק אם השם משתמש והסיסמא נכונים, אם כן, אתה יוצר עוגיה עם הערך של המחרוזת הרנדומלית שיצרת בהרשמה. ואז בכל עמוד שאתה רוצה לבדוק אם המשתמש מחובר, אתה בודק האם הערך של העוגיה קיים במסד, ואם כן, שולף את הפרטים של המשתמש הזה. בהצלחה גורוש ;) |
ציטוט:
אני קצת חושש מהדרך הזו, מכיוון שאם מכניסים לעוגיה את הערך הזה בלבד אז יכולים ליצור עוגיות בניסוי וטעייה ע"י אקספלוייט |
ציטוט:
PHP קוד:
ציטוט:
|
כל הזמנים הם GMT +2. הזמן כעת הוא 19:12. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ