
node app. יש Data Access Layer ל-MySQL, ו-Business Logic לאותנטיקציה (הרשמה והתחברות), לפורום (קריאת הודעות והוספה), למוצרים ולמשתמשים. כל השאילתות כתובות ב-SQL. ארבעה controllers חושפים את הלוגיקה, ועדכון משתמש הוא patch.auth.js בודק אם המשתמש מחובר כדי להחליט איזה תפריט להציג.הטקסט המלא של הדקות הראשונות בהרצאה «הכרות עם האתר הפרוץ שלנו - Insecure Website Review» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא מאוד מעניין וזה סקיוריטי. כאן אנחנו הולכים לראות איך אנחנו יכולים לכתוב קוד שהוא יותר מאובטח. אנחנו בתור מתכנתים צריכים לשים דגש על הנושא הזה וכאשר אנחנו כותבים את הקוד שלנו בין אם זה קליינט סייד ובין אם זה סרבר סייד אנחנו צריכים להבין שיכול להיות שהקוד שלנו מכיל בתוכו בעיות של
סקיוריטי שיגרמו לאפשרות לפריצה על ידי האקרים, אפשרות לבאגים, אפשרות לפעילויות לא אופטימליות, אפשרות לגליפת מידע ולכן אנחנו צריכים לשים את כל הנושא הזה בתשומת לב שלנו, להכיר כל מיני עקרונות שקשורים לנושא הזה כמתכנתים וכאשר אנחנו כותבים את הקוד לגלם את העקרונות
האלה כך שהקוד שלנו יהיה עוד יותר מאובטח. כמובן אי אפשר להגן לגמרי לגמרי על כל אתר ונושא הסקיוריטי זה נושא עצום בגודלו. אנחנו הולכים לתקוף כאן כרגע רק מספר עקרונות מאוד נפוצים ומאוד פופולריים של Security Vulnerabilities, מה שנקרא אפשרויות פריצה ואיך אנחנו מגנים על המידע מפני הפריצות האלה כאשר אנחנו כותבים את הקודים.
הדבר הראשון שאנחנו צריכים לראות זה איזשהו אתר שבניתי במיוחד בשביל הדמו הזה, כאשר האתר הזה נראה שהוא עובד טוב כמו שצריך, אבל כרגע הוא מכיל בתוכו המון בעיות סקיוריטי ואנחנו הולכים לתקוף אחת-אחת.
בכדי שנעבוד עם האתר הזה כמו שצריך אנחנו הולכים לעבוד עם מסד הנתונים Northwind שאנחנו כבר מכירים ב-MySQL, אבל הוספתי למסד הנתונים שתי טבלאות שאני רוצה לעבוד איתן בנוסף במהלך הדמו הזה.
טבלה אחת זו טבלה של פורום והיא פשוט מאפשרת להוסיף הודעות, יש לנו קוד הודעה, יש לנו את השולח, כל בן אדם יכול להכניס את השם ולשלוח, תכף אנחנו נראה את זה, ויש את הטקסט של ההודעה, זאת טבלה אחת.
טבלה שנייה שהוספתי לנורת'ווינד כי לא היה אותה זה יוזרים, טבלת יוזרס, ואנחנו רואים את הקוד של המשתמש, שם פרטי, שם משפחה, שם משתמש וסיסמה, עשיתי את זה מאוד מאוד סימפל.
ואנחנו כמובן הולכים לעבוד עם הטבלאות האלה. בואו נריץ רגע את האתר ובסרטון הזה רק נעשה review על מה בעצם האתר הזה מכיל ומה יש פה מבחינת הקוד בכדי שנתחיל לצלול ולראות איזה בעיות יכולות להיות כאן ומה הפתרונות שאנחנו יכולים לכתוב כמתכנתים עבור הבעיות האלה.
אז קודם כל נריץ את האתר nodeapp.go והמערכת רצה, האתר הזה לא נבנה ב-EJS, באמבדת Java Script, יש פה RESTful סרוויס רגיל ודפי HTML שגולשים ל-RESTful סרוויס באדג'אקס על ידי JQuery, תכף נראה את זה.
כרגע הכל רץ, אנחנו רואים שהוא גם מחובר וגם גם עלה לאוויר מבחינת הסרוור וגם מחובר ל-MySQL. אני לוחץ קונטרול קליק בכדי לפתוח את הדף הראשי, וזה מה שאנחנו רואים.
אנחנו רואים שיש לנו דף בית, אוקיי, גלישה אליו, מביא אותם לדף בית, זה האתר של Northwind וזה הלוגו המקורי של Northwind. הנה הפורום, יש לנו פה את הפורום, אנחנו יכולים לגשת ולהוסיף הודעה, בואו רגע נוסיף הודעה, נניח אני אסף ו-hello nice site ונבצע פוסט,
go, והנה אנחנו רואים שההודעה מתווספת, כמובן שההודעה נמצאת בדאטאבייס, אם אנחנו חוזרים או בדאטאבייס. נמצא פה ומסתכלים על ההודעות אז אנחנו רואים את ההודעה כאן בדאטאבייס יש לנו כאן מוצרים אבל כאשר אני רוצה לראות את המוצרים המערכת אומרת לי רגע רגע פה אתה צריך לעבור לוגין אז היא לא מאפשרת לי להיכנס זה בסדר אם אני מכניס סתם ערכים
ומנסה להיכנס אני מקבל incorrect username or password ואם אנחנו מכניסים את הערכים הנכונים וזה היה, וואו אני כבר לא זוכר, בואו נראה רגע ב-users מושיקו1234 אוקיי אז יש לנו פה מושיקו1234 לוג-אין והנה אנחנו רואים שיש לנו כאן ביצוע לוג-אין אנחנו רואים שהוא אומר לי פה בדיוק מה השם שלי ונבצע עכשיו כניסה לפרודקטס הופה הנה כל המוצרים של Northwind הכל בסדר.
בסדר, ואנחנו יכולים לבצע לוג אאוט. לוג אאוט, אני בחוץ, אני לא יכול להיכנס יותר, רג'יסטר מאפשר לי להירשם בתור משתמש חדש, נבצע רג'יסטר, יש לנו כאן ולידציה כמובן, אני לא יכול סתם לזרוק דברים, הוולידציה קיימת, ואנחנו יכולים, בואו רגע נעשה עוד פעם לוג אין,
מושיקו 1234, לוג אין, אנחנו יכולים ללחוץ על האייקון הקטנצ'יק הזה בכדי לערוך את הפרטים של היוזר הנוכחי לבצע update והוא כמובן יעדכן את הפרטים בדאטאבייס.
זה האתר מבחינה ויזואלית. בואו רק נעשה איזה review מהיר על הקוד שלו ונראה מה יש לנו פה שלב שלב. דבר ראשון יש לנו כאן data access layer כמו שלמדנו הנה הדל הוא משתמש ב mysql מאוד פשוט בואו נעבור הלאה.
ביזנס לוג'יק אנחנו רואים שיש פה כמה לוגיקות. ראשית יש פה את האותנטיקיישן, הנה יש לנו פה את הנושא של הרג'יסטריישן ולוג אין, יש לנו כאן את הנושא של הפורום, תביא לי את כל ההודעות ותוסיף לי הודעה, זה הדברים היחידים שיש לנו פה במערכת, המוצרים,
תביא לי את כל המוצרים, זה הדבר היחידי שעשינו בנוגע למוצרים, הכל בנוי עם שאילתות sql, הכל עובד בלי שום בעיות, בלי שום באגים, אבל כאמור יש פה המון בעיות סקיוריטי שתכף נבין אותן, Users Logic, Get One User מביא לי