PracticU

אבטחה - MVC Security - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס MVC › אבטחה - MVC Security - חלק 2
מילון מושגים:
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
אימות - תהליך שמוודא שהמשתמש או המערכת הם מי שהם טוענים שהם, בדרך כלל באמצעות סיסמה, קוד או תעודה.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.

אבטחה - MVC Security - חלק 2
השיעור ממשיך את נושא האבטחה באתר MVC ומראה איך מונעים גישה לפעולות (Actions) מסוימות למשתמשים שלא נרשמו.
הגנה על פעולות
1. פילטר Authorize: MVC מספקת פילטר בשם Authorize שבודק אם המשתמש מחובר, ואם לא, לא מאשרים את הפעולה. מוסיפים אותו לשתי פעולות Create של מוצרים, כך שמשתמש לא מחובר לא יוכל ליצור מוצר ואף לשלוח בקשת POST.
2. בדיקה: הרצת האתר ולחיצה על Create New Product מובילה לשגיאה 401 Unauthorized. המטרה היא לנתב את המשתמש לדף לוגין במקום.
הגדרות Forms Authentication ב-Web.config
3. Authentication: בתגית system.web מגדירים authentication עם mode="Forms".
4. forms: מגדירים loginUrl לדף הלוגין, בקונטרולר Account ובפעולה Login, ו-defaultUrl לדף שאליו מנותבים אחרי התחברות מוצלחת, כאן דף המוצרים Index.
5. קונטרולר Account: בלי קונטרולר ופעולה כאלה מופיעה ההודעה "your page doesn't exist", ולכן יוצרים את הקונטרולר, את הפעולה Login ואת ה-View שלה.
שימו לב
בדף הלוגין המשתמש יכול גם להגיע ישירות לכתובת הלוגין. במקרה כזה, אחרי הכניסה הוא מנותב לדף ברירת המחדל.
השיעור הבא בקורס: אבטחה - MVC Security - חלק 3
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).

להורדת קוד מקור של כל הדוגמאות בקורס MVC – לחץ כאן


פרקי ההרצאה: אבטחה - MVC Security - חלק 2

  1. 00:00

    מניעת גישה לדפים לא מורשים

  2. 00:35

    שימוש בפילטר Authorize על Create

  3. 01:50

    הגדרת Forms Authentication ב-Web.config

  4. 02:27

    הגדרת LoginUrl ו-DefaultUrl

  5. 03:57

    יצירת Account Controller ו-Action Login

  6. 04:58

    פונקציות בדיקת משתמש ב-Business Logic

  7. 07:06

    פונקציית Register להוספת משתמש

תמלול ההרצאה: אבטחה - MVC Security - חלק 2

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

  1. 00:16

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

  2. 00:27

    בואו נניח שפונקציית אינדקס שמראה את כל המוצרים אנחנו רוצים לכל אחד לאפשר להיכנס ולצפות בה. כנ"ל פונקציית details.

  3. 00:36

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

  4. 01:00

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

  5. 01:08

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

  6. 01:30

    יכול בכלל להירשם אבל בואו נבדוק את זה עד כאן נריץ את האתר נבצע create new product ואנחנו מיד מנותבים לדף ש-aif מחזירה לנו והדף הזה זה unauthorized כלומר error 401 unauthorized אין לנו אישור בכלל להיכנס לדף הזה אבל רגע אנחנו לא רוצים שהלקוח יראה את הדבר הזה, אנחנו רוצים לנתב אותו לאיזשהו דף לוגים.

  7. 02:00

    אז מה הדברים שאנחנו צריכים לעשות? אז בואו נסגור. אנחנו צריכים לגשת ל-Web Config, ואנחנו צריכים לגשת לתגית System.Web שנמצאת בתוך תגית השורש Configuration.

  8. 02:13

    דבר ראשון, אנחנו צריכים להגדיר שאנחנו עובדים במוד Security שנקרא Forms Based Authentication. זה מתבצע על ידי הגדרת Authentication, תגית Authentication.

  9. 02:27

    יש לה mode שווה forms בתוכה אנחנו מגדירים תגית forms מגדירים login url מיהו דף הלוגאים שלנו שכמובן צריך להיות לנו דף כזה. בואו נניח שהוא נמצא בתיקייה הראשית של האתר בתוך קונטרולר שנקרא אקאונט שאנחנו צריכים לבנות ואקשן שנקראת לוג אין.

  10. 02:55

    ובואו נגדיר גם default url מה זה default url במידה והמשתמש גלש ישירות לדף לוגין, כלומר הוא רשם קודם כל בכותרת של הדפדפן, ב-URL של הדפדפן, שהוא מעוניין לגלוש ללוגין.

  11. 03:13

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

  12. 03:37

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

  13. 03:50

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

  14. 04:09

    אוקיי, בואו נבדוק את זה. ניגש לקונטרולרס, נוסיף קונטרולר שנקרא אקאונט קונטרולר, נגדיר בתוכו אקשן לוגין ונייצר עבור הלוגין view.

  15. 04:31

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

  16. 04:46

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

  17. 05:03

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

  18. 05:20

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

  19. 05:46

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

  20. 05:56

    תשנו public בוליאן is exist תקבל string username תחזיר לנו db.logins.any עבור לוגין אנחנו רוצים לבדוק שהיוזרניים שווה ליוזרניים שהתקבל.

  21. 06:35

    פונקציה נוספת תיקרא is exist עבור username ו-password כאן אנחנו נשתמש איתה כאשר הבן אדם ירצה לבצע לוגין ודרכה אנחנו נבדוק האם אם הוא קיים, כן או לא.

  22. 06:53

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

  23. 07:23

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

  24. 07:56

    לאחר מכן save changes.

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

ההרצאה הקודמת: אבטחה - MVC Security - חלק 1

ההרצאה הבאה: אבטחה - MVC Security - חלק 3

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

  • הסבר על MVC
  • Security Groups - חלק 1
  • אבטחה עם VM Templates
  • מושגי יסוד ב-Security

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

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס Git ו-GitHub עם Visual Studio