PracticU

Preventing Password Response

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › Preventing Password Response
מילון מושגים:
תגובה - המידע שהשרת מחזיר ללקוח בתשובה לבקשה, הכולל בדרך כלל נתונים וקוד סטטוס.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
דפדפן - תוכנה שמציגה דפי אינטרנט ומריצה את הקוד שבהם, ומאפשרת לגלוש בין אתרים, למשל Chrome או Firefox.
סשן - פרק זמן של פעילות רציפה בין משתמש למערכת, שבו נשמר מידע על מצבו, למשל לאחר התחברות לאתר.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.

Preventing Password Response
בלוגין ובמקומות נוספים האתר מחזיר ללקוח את אובייקט המשתמש כולל הסיסמה. ההרצאה מראה איך לגלות את זה ואיך לוודא שהסיסמה אף פעם לא חוזרת לדפדפן.
איך זה נראה ואיך מתקנים
1. איתור הבעיה: פותחים F12, עוברים ל-Application ובודקים את ה-Session Storage. אחרי login רואים שם את המשתמש עם ID, FirstName, LastName, UserName וגם Password. המידע נשמר ב-Session Storage ולא ב-Local Storage, כדי שיישאר רק לגלישה הנוכחית. אפשר היה לשמור ב-Local Storage עם "remember me".
2. למה זה גרוע: כל מי שמסתכל על המחשב יכול לראות את הסיסמה.
3. הסיבה בלוגין: השאילתה select * מחזירה את כל השדות. מחליפים אותה בבחירה של שדות מסוימים בלבד: ID, FirstName, LastName ו-UserName.
4. הרשמה: האובייקט שמגיע מהלקוח מכיל סיסמה, והשרת מחזיר אותו אחרי שהוא מעדכן את ה-ID. לפני ההחזרה מבצעים delete user.password.
5. בדיקת שאר המקומות: בפורום ובמוצרים אין בעיה. ב-users logic מתקנים את getOneUserAsync כך שיחזיר רק את ארבעת השדות. ב-updateUserAsync אין צורך, כי העדכון לא שולח סיסמה.
6. בדיקה: אחרי login ה-Session Storage מכיל את הפרטים בלי הסיסמה, והגישה לדף המוצרים עובדת.
שימו לב
עדכון סיסמה נעשה בדרך כלל בנפרד, בדף שחזור סיסמה. אם עדכון הפרטים כולל סיסמה, גם שם צריך להסיר אותה מהתשובה.
אפשר עכשיו לעבור על כל נקודת החזרה של משתמש ולוודא שהסיסמה לא יוצאת מהשרת.
השיעור הבא בקורס: קביעת סיסמאות עבור Setting a Password to MySQL

פרקי ההרצאה: Preventing Password Response

  1. 00:00

    פרטי ההתחברות ב-Session Storage

  2. 00:51

    Session Storage לעומת Local Storage

  3. 01:27

    ביצוע login באתר

  4. 02:02

    הסיסמה מוחזרת לדפדפן

  5. 02:40

    הבעיה בשאילתת select all

  6. 03:14

    החזרת שדות ספציפיים בלבד

תמלול ההרצאה: Preventing Password Response

הטקסט המלא של הדקות הראשונות בהרצאה «Preventing Password Response» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

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

  2. 00:31

    ב-Session Storage האתר מכיל מידע לגבי ההרשמה של היוזר. שזה בסדר גמור, כי אני כן רוצה לשמור בצד של הקליינט את העובדה שהוא עשה לי לוגד אין, כן או לא.

  3. 00:47

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

  4. 01:05

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

  5. 01:31

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

  6. 02:01

    אוקיי, אבל מה אנחנו רואים שכתוב פה? ID, first name, last name, username ו-password.

  7. 02:13

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

  8. 02:37

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

  9. 02:52

    למה זה הוחזר? למה גם הסיסמה הוחזרה? כי יש פה שאילתא שהיא נראית תמימה, אבל היא מכילה בתוכה את הבעיה הזאת. Select all from users. אני לא רוצה לבחור את כל השדות של יוזר.

  10. 03:07

    אם אני מסתכל בדאטאבייס על יוזר, ליוזר יש ID, first name, last name, user. ופסוורד. בואו נניח שאת ה-ID אני כן רוצה, אולי אני עושה איתו משהו בהמשך, אבל את הפסוורד בהחלט אני לא רוצה להחזיר ללקוח.

  11. 03:22

    לכן הפעולה הראשונה שאנחנו עושים זה מבינים שאנחנו לא מחזירים כל הפרטים בלוגאין ומבצעים החזרה רק של דברים ספציפיים שאנחנו רוצים. לדוגמה, ID, First Name, Last Name ו-User Name.

  12. 03:39

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

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: Improper Error Handling

ההרצאה הבאה: קביעת סיסמאות עבור Setting a Password to MySQL

הרצאות קשורות מקורסים אחרים

  • change admin password

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React