(שאלה) session VS cookies

refaelgold

New member
(שאלה) session VS cookies

יש לציין שלפני השאלה שלי קראתי את הדיון הבא משנת 2006 :

http://www.tapuz.co.il/forums2008/viewmsg.aspx?forumid=312&messageid=69270675

עשיתי גוגל ונכנסתי להרבה אתרים אשר הסבירו לי את ההבדל בין cookie לsession ככה שפחות או יותר אני מבין את ההגדרה של שניהם וגם יודע ליישם אותם בשפה

השאלה שלי היא יותר תאורתית:

ממה שהספקתי בדיון , כדאי לי לשמור את פרטי ההתחברות לאפלקציה למשל :
1.שם משתמש - cookie
2.סיסמא cookie
3.מספר סידורי PK- ישמר דווקא בsession
עבור כל דף בוא אני אשתמש מומלץ להעביר את הid באמצעות session וכך לקבל גישה לטבלאות אחרות במבנה נתונים
חובה לכתוב session_start() בכל עמוד
בקישור למשל להתנתקות מהפרופיל , מומלץ להשתמש בsession_unset()-->session_destroy() (תתעלמו מהsyntax , החץ המחבר בין הפונקציות לא מסמן כלום פרט להמשכיות).

כרטיסי אשראי , חובה לשמור בsession למשל (אם בכלל?) אבל כמו שציינתי , מומלץ להשתמש בעוגיות רק בשם משתמש וסיסמא ??

אני מדבר על מערכת ניהול תוכן או פרופיל כלשהוא לביצוע עגלת קניות ופעולות דומות.

אני בכוונה לא מתייחס למעקב אחרי הגלישה של המשתמש ולהשתיל לו פרסומות סמויות .

אני רוצה לראות שהבנתי את השימוש האופטימלי בsession ו-cookie

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

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

קודם כל, את ההבדל הטכני בין עוגיה לסשן אתה הבנת? זה חשוב כדי להבין למה ומתי להשתמש בכל אחד מהם ואת הסכנות לשימוש בהם.

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

למה לעשות את זה ולא לשמור את השם משתמש והסיסמה בעוגיה?
כי אם גונבים לו את העוגיה, לא תהיה לגנב הסיסמה והוא גם לא ידע באיזה משתמש מדובר כי אין לו לא את הUID ולא את השם משתמש.
וגם זה חוסך לך לבצע את התהליך האימות כל בקשה, אתה רק מאמת מול הDB פעם אחת, ושומר בסשן את הUID, וזהו.
וגם, אם אתה רוצה לנתק את המשתמש, או לגרום לזה שעוגיה שנגנבה, או מישהו שהתחבר במחשב של חבר ולא התנתק, אתה לא צריך שהוא ישנה את הסיסמה, אתה נותן לו לאפס את הLOGIN HASH הזה.(אפשר גם לעשות מנגנונים יותר מתוכחמים של זיהוי מקומות שהוא התחבר מהם, פייסבוק וGMAIL עושים את זה, זה לא מסובך, זו רק הרחבה של זה)

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

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

refaelgold

New member
הבנתי כמעט את הכל

פרט לעניין של הhash הייחודי , לא נתקלתי בזה אף פעם .
אני הייתי בטוח שuser_id שהוא הPK של הtable הוא המזהה היחידי והדרך היחידה לגשת אל המשתמש ומשם לכלל הטבלאות שלו אחרי שם משתמש וסיסמא שאותם הוא יצטרך להקליד מחדש בהנחה והוא סגר את הדפדפן.

היציאה מהפרופיל היא דרך session_start ואז session_destroy ואז HEADER לדף הבית

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

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

תודה רבה על התגובה הקודמת , זה סידר לי את העניינים פשוט כל העניין של הHASH שנותן גישה לא בדיוק מובן לי .
אין לי בעיה להתקין הרחבה , המטרה לכתוב קוד יעיל וOOP
 
אתה שולף את הUID לפי הערך היחודי ששמור בעוגיה

נהוג שהערך הזה יהיה HASH של דברים שסביר להניח יצרו מחרוזת יוניקית כמו הUID + MICROTIME + RANDOM + SALT
(זה לא חייב להיות HASH, נהוג שזה יהיה HASH כי אז לא ניתן(כמעט) לשחזר את הערכים המקוריים, וגם כי הערך שאתה מקבל אפשר לשמור בקלות כי הוא רק ספרות ותווים באנגלית.)
אחרי שיש לך את הUID, באמת איתו אתה מבצע את הפעולות במסד נתונים.

בנוגע להתנתקות, אם אתה משתמש בעוגיות, אתה צריך גם להפטר מהעוגיה. תעשה שוב SETCOOKIE על עוגיה עם אותו שם רק ערך NULL וזמן תפוגה שלילי
 

refaelgold

New member
אוקיי, אז הבנתי יותר

הבנתי איך ניתן "נפטרים" מהעוגייה וזה עזר לי בקטע של הגדרה של Null וזמן תפוגה שללי .

אני מבין בערך איך לבצע זאת בhush, קראתי על הפונקציה קצת בדוקומנטציה של php , אני מאמין שלקחת את הuserid מהשאילתא של select ואז לאחסן את הערך בתוך hush ואז להשתמש בו בתור setcookie עם הערך לאחר השינוי שלו עם hush

אני אציג קוד בהזדמנות שאני אגיע לרמה יותר מתקדמת.

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


תודה.
 
מימוש ההHASH לא אמור לעניין אותך כרגע

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

או שמישהו כאן מכיר משהו טוב

צריך איזה משהו עם מימוש בקוד והסברים לכל דבר.
 
למעלה