PracticU

הכרות עם האתר הפרוץ שלנו - Insecure Website Review

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › הכרות עם האתר הפרוץ שלנו - Insecure Website Review
מילון מושגים:
Northwind - מסד נתונים לדוגמה של מיקרוסופט, המדמה חברת מסחר ומשמש ללימוד ולהדגמת שאילתות SQL.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
צד שרת - החלק של היישום שרץ בשרת ואחראי על הלוגיקה, מסדי הנתונים והעיבוד שמאחורי הקלעים.
REST - סגנון לבניית ממשקי API מעל HTTP, המבוסס על משאבים ועל שיטות סטנדרטיות כמו GET ו-POST.
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.
jQuery - ספריית JavaScript ותיקה שמפשטת את הגישה לרכיבי הדף, אירועים ואנימציות בדפדפן.
AJAX - טכניקה שמאפשרת לדף אינטרנט לשלוח ולקבל נתונים מהשרת ברקע ולעדכן את התצוגה בלי לטעון מחדש.
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.

הכרות עם האתר הפרוץ שלנו - Insecure Website Review
מתכנת צריך לדעת שהקוד שלו, בצד הלקוח ובצד השרת, עלול להכיל בעיות security שמאפשרות פריצה, באגים ודליפת מידע. ההרצאה פותחת סדרה על כתיבת קוד מאובטח, ובה מציגים את האתר ההדגמתי שיש בו בעיות כאלה בכוונה.
האתר שנסקר
האתר נראה תקין, אבל מכיל המון בעיות security שיטופלו אחת אחת בסרטונים הבאים. הוא עובד עם מסד הנתונים Northwind ב-MySQL, ואליו נוספו שתי טבלאות: טבלת פורום (קוד הודעה, שולח וטקסט) וטבלת users (קוד, שם פרטי, שם משפחה, שם משתמש וסיסמה).
מה האתר עושה
1. דף הבית והפורום: כל אחד יכול להוסיף הודעה בפורום, וההודעה נשמרת במסד הנתונים.
2. מוצרים: מי שאינו מחובר לא יכול לראות את המוצרים. פרטים שגויים מחזירים את ההודעה incorrect username or password, ופרטים נכונים מאפשרים כניסה.
3. הרשמה והתחברות: יש הרשמה עם ולידציה, התחברות והתנתקות. משתמש מחובר יכול לצפות בפרטיו ולעדכן אותם.
איך הקוד בנוי
- צד שרת: שירות RESTful ב-Node עם Express, ומריצים אותו באמצעות node app. יש Data Access Layer ל-MySQL, ו-Business Logic לאותנטיקציה (הרשמה והתחברות), לפורום (קריאת הודעות והוספה), למוצרים ולמשתמשים. כל השאילתות כתובות ב-SQL. ארבעה controllers חושפים את הלוגיקה, ועדכון משתמש הוא patch.
- צד לקוח: קבצי HTML עם קובץ JavaScript לכל דף, בעזרת jQuery. בעת התחברות נשלחת בקשת Ajax בשיטת POST ל-route של האותנטיקציה עם נתוני JSON. אם אין שגיאה, פרטי המשתמש נשמרים בצד הלקוח, ו-auth.js בודק אם המשתמש מחובר כדי להחליט איזה תפריט להציג.
בסרטונים הבאים נבחן בעיה אחר בעיה ואת הפתרון שהמתכנת יכול לכתוב לה.
השיעור הבא בקורס: Improper Error Handling

פרקי ההרצאה: הכרות עם האתר הפרוץ שלנו - Insecure Website Review

  1. 00:00

    חשיבות האבטחה בכתיבת קוד

  2. 00:58

    חולשות אבטחה נפוצות

  3. 01:36

    טבלאות forum ו-users ב-Northwind

  4. 02:53

    הרצת האתר ו-RESTful Service

  5. 03:31

    הפורום והוספת הודעה

  6. 04:15

    כניסה למשתמש לצפייה במוצרים

  7. 04:58

    יציאה, הרשמה ועריכת פרטי משתמש

  8. 05:54

    סקירת שכבות הקוד של האתר

תמלול ההרצאה: הכרות עם האתר הפרוץ שלנו - Insecure Website Review

הטקסט המלא של הדקות הראשונות בהרצאה «הכרות עם האתר הפרוץ שלנו - Insecure Website Review» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

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

  2. 00:29

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

  3. 00:51

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

  4. 01:23

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

  5. 01:43

    בכדי שנעבוד עם האתר הזה כמו שצריך אנחנו הולכים לעבוד עם מסד הנתונים Northwind שאנחנו כבר מכירים ב-MySQL, אבל הוספתי למסד הנתונים שתי טבלאות שאני רוצה לעבוד איתן בנוסף במהלך הדמו הזה.

  6. 02:01

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

  7. 02:18

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

  8. 02:32

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

  9. 02:56

    אז קודם כל נריץ את האתר nodeapp.go והמערכת רצה, האתר הזה לא נבנה ב-EJS, באמבדת Java Script, יש פה RESTful סרוויס רגיל ודפי HTML שגולשים ל-RESTful סרוויס באדג'אקס על ידי JQuery, תכף נראה את זה.

  10. 03:15

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

  11. 03:31

    אנחנו רואים שיש לנו דף בית, אוקיי, גלישה אליו, מביא אותם לדף בית, זה האתר של Northwind וזה הלוגו המקורי של Northwind. הנה הפורום, יש לנו פה את הפורום, אנחנו יכולים לגשת ולהוסיף הודעה, בואו רגע נוסיף הודעה, נניח אני אסף ו-hello nice site ונבצע פוסט,

  12. 03:56

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

  13. 04:26

    ומנסה להיכנס אני מקבל incorrect username or password ואם אנחנו מכניסים את הערכים הנכונים וזה היה, וואו אני כבר לא זוכר, בואו נראה רגע ב-users מושיקו1234 אוקיי אז יש לנו פה מושיקו1234 לוג-אין והנה אנחנו רואים שיש לנו כאן ביצוע לוג-אין אנחנו רואים שהוא אומר לי פה בדיוק מה השם שלי ונבצע עכשיו כניסה לפרודקטס הופה הנה כל המוצרים של Northwind הכל בסדר.

  14. 05:07

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

  15. 05:30

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

  16. 05:45

    זה האתר מבחינה ויזואלית. בואו רק נעשה איזה review מהיר על הקוד שלו ונראה מה יש לנו פה שלב שלב. דבר ראשון יש לנו כאן data access layer כמו שלמדנו הנה הדל הוא משתמש ב mysql מאוד פשוט בואו נעבור הלאה.

  17. 06:06

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

  18. 06:29

    תביא לי את כל המוצרים, זה הדבר היחידי שעשינו בנוגע למוצרים, הכל בנוי עם שאילתות sql, הכל עובד בלי שום בעיות, בלי שום באגים, אבל כאמור יש פה המון בעיות סקיוריטי שתכף נבין אותן, Users Logic, Get One User מביא לי

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

ההרצאה הקודמת: מחיקת מוצר קיים בנוד NodeJS

ההרצאה הבאה: Improper Error Handling

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

  • הכרות עם המעבדה שלנו
  • Website Testing
  • הכרות עם NFS
  • הכרות עם Sharepoint

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

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