 עכשיו יש לנו הרצאה של לירנטל, ראש צוות פיתוח בHP Enterprise על Node.js Securities Unright, לירן משתתף הרבה בחבילות Open Source, מין היום, נכון? מין JS, תוראים לכל מיני חבילות Open Source נוספים, Javascriptים וכולי, אפשר למצוא אותו הרבה בגיטאב, זה כבר ראיתי, תוראים ב-Radius על פיתוח נכון ב-Node.js שומעים? טוב, מקוות שאתה לא עורת דומים עידיי? סבבה אוקיי, אז שמי לירן, הבעתי לדבר איתכם קצת על Node.js ואיך כותבים את זה נכון, מנקודת המבט של מפתחים ואיך הפרקך להעלות את המודעות לזה באופן כללי ולהראות שזה לא כל כך חחוק מאיתנו אז זה באמת קצת עליי, אני עובד ב-HPE, כאילו את Packard Enterprise, מוביל צוות פיתוח, אנחנו עושים הרבה Node.js, Javascript, Tangular, כל המינסטק, Java, Mongo המון המון טכנולוגיות מעניינות, ואחד הדברים שאנחנו צריכים להתמודד איתם זה לא מעט שינויים שקוראים בעולם הזה אם זה אומר הרבה פקגז חדשים, הרבה ליבריס שמתחלפים, ומינסתם שהרבה טכנולוגיות כל הזמן נפרצות ונפרצות וצריך לדעת להיות בעצם עמיד לכל הדברים האלה, המוצר שלנו, לעומת הרבה מוצרים אחרים שאולי חושבים עליהם ב-HPE, Web Facing, זאת אומרת הוא public לחלוטין ואנחנו עושים שם איזשהי תאות אז זה יכול ללות ביוקר. אז קצת עליי, כשאני לא בעבודה, או רוב הזמן כשאני בבית, אני תסק הרבה בקוט פתוח כלומר הרבה התממשקות לכל מיני פרויקטים בקוט פתוחים, זה Javascript, דברים אחרים שלא בכך קשורים להפתחת מידע אבל עצם העניין שאנחנו צריכים להתמודד אין בכלל לזה שצריך להיות הפתחת מידע גם בפרויקטים קוט פתוח זה משהו שהוא מאוד חשוב, ואני רוצה לדבר איתך מה זה קצת היום אז מבחינת מה שנעשה היום, אנחנו מדבר קצת על Node.js ולמה זה חשוב להכיר את העולם הזה, עולם של Javascript מדבר קצת על מקרים שקרו בתעשייה, החלקם בתחיר מוכרים לכם חלקם שמעתם, דברים שבאמצם קורים בכלל באיקוסיסטם הזה של Javascript וספציפית Node.js, ואחרי זה נצלול בעצם לעיקר העניין שזה לדבר בעצם על כמה מתקונים טיפים שאפשר לקחת אותם ולהתמיע אותם בפרויקטים שלכם כמעט כנראה בלי הרבה יותר מידע עם האמצ וגם אתם כמפתחים יכולים בקלות יחסית גבוהה, לבוא ובעצם להפתח את המרכת שלכם אז בואו נתחיל לדבר על הביג בנג של Javascript, נכון Javascript היום נמצא בכל מקום ורבה מיזה התחיל ב-2009 כשריין דל בחור שכתב בעצם את המנוע של Node.js מנוע שמבוסס על ה-V8-Engine של גוגר, קורס פלטפורם, אופן סורס, זה שאוראן טיימן ווירומן שאפשר ללכת ולפתח והוא הביא בעצם את כל עולם את Javascript לסרבר, מה שגורם לנו עוד יותר לדוג להפתחת מידע והוא עשה את זה כמו הרבה דברים שמתחילים בקוד פתוח, עקב צורך הוא ראה איך שהוא איזה פייל פרוגרס, אפלוט פרוגרס ברובד והוא רצה לבוא ולהיעל את זה ולראות איך אפשר לתקשר עם השרת, לעשות איזה Real-Time, פרוגרס ברו וכולי ומשם הוא הלך ויצר את Node.js שזה מרתק בפני עצמו וכמה שנים יותר מאוחר, בעצם התקדמנו לעולם שבו כבר יש רליס ראשון של Node.js ויש משהו שנקרא NPM, שזה ה-Package Management ובעצם נוצר איזה שהוא אדופשן מאוד מאוד גווה בעולם, חברות ידועות שזה יצר איזה שהוא ה-IP בהתחלה ואנשים מתחילו לאמץ את זה יותר ויותר והיקר הדבר שצריך להבין ש-Node.js הוא ג'רו-הסקיפט יוסופו של דבר וג'רו-הסקיפט היום באמת נמצא בכל מקום אם זה בפרונטנד ובבקנד, אם ראינו קודם ארצה על הרדואר ואינטרנט או פינגס אז יש ג'רו-הסקיפט ליברירי שנקרא Johnny 5, שנועד להתחבר לרדו-אינובורדס אז זה בעצם נמצא באמת באמת היום בכל מקום וזכת הסיבות שאנחנו צריכים לצאת הרבה יותר מודעים לעניין הסקיוריטי ודברים שאנחנו תכף נסקור אז בכלל, למה זה כל כך חשוב אפילו עוד טיפה לגבות את עולם הג'רו-הסקיפט אם נסתכל על Github, שזה המקום שרוב המפתחים נמצאים ברור רוב המפתחים שנמצאים באופן סורס אז יש איזשהו סרוי שנעשה ואפשר לראות שג'רו-הסקיפט מובילי שם באופן די ברור את הפלטפורמות ג'רו-הסקיפט טנגולר מן הסתם אבל באופן מאוד מאוד ברור ולא רק את זה, הוא באופן כללי מוביל את כל האופן סורס פרוג'אקס זאת אומרת, אם הולכים וסוקרים כמה פרויקטים בגיטם המבוססים ג'רו-הסקיפט אז הרוב הפרויקטים המון המון קוד פתוח קוד שאירגונים מאמצים פשוט חי בעולם הג'רו-הסקיפט אז כמה סיפורים ככה מהתעשייה אז דבר ראשון, יש איזשהו פקיץ שנקרא ר'אף אול שפורסם ל-NPM כמה אנשים שמור לפקיץ הזה אחלה אחלה אז NPM זה איזשהו פקיץ מנג'מנט רפוזיטורי אפשר לפבלי של הפרויקטים כל אחד יכול לפבלי שאין איזשהו גוונס או איזשהו משמח שלך לחתום על אהב או איזשהו סרטיפיקי שצריך להכניס או משהו כזה כדי לה, כי שזה אתם זה אתם וכולי וזה עובר בדיקר, אין אז מה קורה כשמפבלשים לשם משהו בעצם נתנים אותו זה את זה מניח שכולם מבנים מה זה אומר rm-rf אז זה משהו עושה, אוקיי? וזה משהו עשה יותר נכון ורגע שתקינו את אותו פקיץ מי שבטעות או לא בטעות או איך שהוא מישהו עזרי, מישהו אחר כדי להתקין את זה כחלק מהפרייניסטול שלו כשהוא בא להיות מותקן בפקיץ בנוד מודול שלכם הוא הראיתי את הפקודה הזאתי זה היה קצת לא נעים כולם שסיפרו להם על זה והורידו את זה שעתיים אחר כך נזק ניסה איפה שהוא כנראה סיפור אחר אני קורא לזה phishing, אתה אקסן p.m. style למה? יש איזשהו פקיץ שלחמת שנקרא ולידי איטור ג'ייס נזכור אותו ככה בהמשך ללמה עושים הוא שיל לנו בתור מפתחים מאוד מאוד פופולרי אם אני הולך ומחפש, אני עכשיו מישהו שרוצה לעשות יהודי לגיינס על הפקיץ אז זה להוסיף אותו כדי שאני אוכל שאת ולידציות על אינפוטים וכולי ככה המהותכן, משור, בשל בואו נשתמש נכון נקרא ולידי איטור ג'ייס מה דבר הבא שרוסים? הולכים לקונסול, npm install ולידי איטור נקודה ג'ייס סייב לפקיץ ג'ייסון ומקבלים פקיץ אחר כי ב-npm הוא נקרא ולידי איטור אוקיי אז מה אנחנו מדברים כאן על זה שאפשר בעצם לפבלש כל פקיץ ובצורה כדאותי מספיק שהיוזר טעה ואיך שהוא הולכנו אותו שולל לבוא ולהתקין משהו שדומה אנחנו בעצם יכול להתקין משהו שהוא יכול להתקין משהו שהוא לא יתכוון אליו דוגמאות שעשיתי לפני ההרצאה כדי להוציא את המספרים אני לא אומר שסוקת היו בלי נקודה הוא בעייתי ויש בו פגים לא יכול שזה גם איזשהו פקיץ, ג'ייסון וכולי אבל אנשים מורידים את זה וכאן העניין של המודעות שלנו לבוא ולעשות את השיעוד יהודי לג'ייס ולהבין מה אנחנו מתקנים כי מספיק שאנחנו מתקנים משהו לא נכון עם איזה נקודה ושגיעת כתיב יכול לגרום בעצם למון המון בעיות עוד דוגמא אגליפיי ג'ייס ויגליפיי ג'ייס בלי מקף ובעיה האחרונה שאני רוצה לשתף אתכם בסיפור קטן שאני התקלתי בו גלשתי באינטרנט התחלתי לקרוא קצת מאמרים וגליתי שאנחנו לא מכנחים את הדור המשך כמו שצריך כתבה מסאיט פוינט אמיתית התחלתי לקרוא את הכי זה היה קצת נו ג'ייס ואיך בונים איזשהו וייפה אידש בורד עניינים ותחלתי לקרוא ולקרוא ולקרוא באמת בלי שום עניין שלבו ולחקור אותם מבחינת סקיוריטי ואז אני רואה איזשהו קטע כזה של קוד, שנמצא בתוך האתר ואם אתם רואים איזה שם איזה שהוא צ'יילד פרוסס אגזק שמפעיל לפקודה ודבר הראשון שקפץ לי כי אם קצת יותר מודעות לך כותבים קוד נכון אפשר להבין שאפשר לכתוב את זה בצורה יותר נכונה אגזק פייל וכולל או מעבירים את כל השורת פקודה כפרמטר אחד אז ברור שהמי שכתב את התטוריה לזה לא יתכוון ואולי לא חשב על זה יותר מדי אבל אנחנו בעולם עדה וזה הקובה שאני חובש כאן רגע כדבר אופר ולא כסקיוריטי רי סרצ'ר בעצם ליות שיותר מודעים לעובדה שאנשים כן עושים קופי פייסט וכן לומדים מדוגמאות באינטרנט אחר כך מיישמים אותם ואז באים בעצם כל הסקיוריטי רי סרצ'ר שזה רוב הקהל אני מניח ואומרים אז את זה לא ככה יש דרך יותר טובה לעשות את זה ואנחנו כמפתחים צריכים לדעת לחנך נכון ולהיות מודעים לכך אנחנו כותבים קוד ובטח שאנחנו כותבים על זה אחר כך ארטיקה אז זכרי זה באינטרנט לבוא ולראות את המודעות הזאת אז קצת לרוב העניין של לשמוע התכנסנו לדבר רצת על טיפים של איך אפשר בעצם להכניס בקלות שכבות של הפתחת מידע באפליקציה ותכף נעבור עליהם אחד אחד אז הדבר הראשון אולי זה להשתמש ב-http headers שמאפשרים לנו לבוא ולצורת אישו שכווה של הגנה בקליינסייד כדלים נועה כל מיני דברים שיכולים לקרות שם כמו למשל כמו למשל מישהו עושה לי ג'אמינג למחשיר של הקליקר אוקיי שם פה לומדים מהיותי כל הזמן, יפה אז יש איזשהו ה-http headers שנקרא Strict Transport Security אז הוא נועד לעשות זה בעצם להגיד לדף דפן, אם הוא נשלח מהסבר הוא נועד להגיד לדף דפן, תשמע תרנדר לי את כל הדתה את כל הקונטנט שהמגיע מהשרת את כל הלינקים, תעביר את כולם ל-https אוקיי תלסו לי מנין במידל שלא הכנסו יעשו אססל סטריפינג כל מיני אפשרויות שאפשר לתקוף אחר כך את ה-user בוא תנסה להגן עליהם אז איזה שהוא עדר שאפשר לבוא ולהכניס אותו בעצם ל-node.js עדר אחר שאפשר לבוא ולהכניס זה xframe options איזה שהוא עדר שבעצם נועד לבוא ולהגיד לדף דפן על תרנדר לי את המוד הזה, את ה-website הזה על תרנדר לי אותו באוריג'ין אחר על תרנדר לי אותו בכלל תרנדר אותו רק מהדומה אין שלי אכחת תרנדר אותו בתורה עפרים עדר אחר, content security policy עדר שהוא מאוד מאוד אשיר, מתפתח בעצם נועד להגיד לדף דפן מהם הטרסטת קונטנט שלך אפשר לבוא ולהגיד אפשר להעביר הידר כזה שומר לדף דפן תקשיב javascript על תרנדר לי את כל האינליין javascript נכון ואז ככה אפשר לנסות למנוע את כל הסקריפט תאגס ואקססס על תרנדר לי אימג'ים מסורס מסוים על תרנדר לי form action תפשר רק לעזור מסוים בעצם זה איזה שהוא security policy של הדף דפן שנועד להגן להוסיף איזה שהיא שכבת הגנה שאוטומטית רק בזה שאנחנו שולכים את ההידר הזה אנחנו עושים את מתיגיישן לxss ודברים אחרים יש עוד שתי הידרים שקללתי לא שואלתם בשימוש הרבה מה שאני מבין לפחות מאוד רלוונטים לדפנים ספציפיים ולא חלק מספק אחד מהם נועד לצור xss filters והשני השני אופה עובד חזק והשני זה x content type options שגם כן נועד לפנוע בעצם מים type sniffing שזה בעצם אומר אי אפשר לעבוד על הדף דפן על מהו content type שאתה רגע הולך לאוריד אל תהיה חכם תן לי להגיד לך מה זה לפי הידרים ודברים אחרים בעצם למה אני סוכר את כל האופציות האלה כי כל האופציות האלה כאן של ההידרים אפשר בקלות יחסית בזרת פקט שנקרא הלמט שאתם יכולים לראות שהוא מאוד פופולרי בעולם xpress.js לא מכיר הרבה שלא משתמשים בו נותן מענה גם להדרים אחרים סכרנו רק חלק מהם אבל בעצם רק באמצעות להשתמש בו להוסיף אותו לפרויקט, להגדיר אותו נכון כמובן לאפליקציה אוטומדי תאפשר לענות על כל ההדרים האלה ולהכניס גבר השכוות סכירותי נראה דמו אוקיי, אז אם אנחנו מסתכלים על הקטע קוד שיש כאן מסתכל איתכם ביחד אנחנו רואים שאנחנו עושים איזושהי אינליזציה לאקספרסאפ ואנחנו משתמשים במדלוואר כל האפ נקודה היו להשתמש בהם ולעבור על הרי קוויסט ולפרסס אותו לעשות איתו כל מיני דברים אז למעלה אני אומר להקספרס או להשתמש במדלוואר של הסכירות טראנספורט פוליסי נגדיר לו איזשהו מקסייג ומגדיר שם עם קלוצה בדומיין אם אני מאפשר או לא ואכול להמשיך על עכשיו כל העניין הוא שזה מודולריס זאת אומרת, אם גילינו שאנחנו צריכים כן לאפשר X-Frame אז אין בעיה, זה לא הכול הלא כלום אפשר לבוא ולהגדיר את זה איך שרוצים כמובן שיש הגדולות שמצאת יותר מורכבות, CSP למשל צריך להבין מה אנחנו עושים השיקול דעת כנו לגמרי לבוא ולהבין מהאפליקציה עושה לדוגמה אם האפליקציה שלנו ראשון בצורה כזאת שחייב InlineJavaScript שיש script tags בתוך העמוד html אז ברור שאם אני אגיד פה בסקריב צורס סלפ או משהו אחר או לא InlineSource אני ישבור את האפליקציה עד אבדפן פשוט לא ירנדר להתותו ג'אבא סקריב את האפליקציה תישבר אז אין ספק שצריך להבין מה עושים אבל בזוהה קלות שבה אפשר להכניס שכבה אחת לפחות של מגננה לאפליקציה, לפרויקטים בנו-JS שיך אז רק לתואר חזקירה ואם אנחנו לוקחים כאן ראשימות אז פרויקט אחר שהוא מתחרל להלמד נקרא לוסה זה פרויקט שמגיע מהבית של יאו או פייפל גם כן אשיר מאפשר כל מיני דברים אחרים יש הרבה הדרים שגם לא נגענו מהם P3P זה מאפשר גם CSRF כך זה אני ראה למשל בלוסה קונפיגורציה די דומה פסחה כל פקטג' אחר קצת בנהלי אבל קל לעשות את זה נכון בנו-JS אז אם אנחנו רוצים לעבוד עם סשן שזה בעצם קוקיז כדי לסור איזשהו סטייט בתוך האפליקציה שלנו אז אחד מה דברים שאפשר לעשות זה קודם כל להכניס שם סקיר ופלג אוקיי מאפשר לנו בעצם להבשלוח את הקוקיז רק מעלי HTTPS פלג אחר HTTP only אי אפשר להגשת לקוקי בעזרת Javascript וקל מאוד להכניס את זה זאת אומרת שוב פעם המיינסט כאן איך אנחנו בתור מפתחים לוקחים את הארווירנס הזה של הפתחת מידע צעד אחד קדימה אז נורא פשוט אם אנחנו חושבים אפילו קדימה מבחינת מפתחים אנחנו מפתחים ואנחנו מודעים לא למה סקירו את זה אני משתמש בקוקי יש לסקוקי זה שם בזרת השם של הקוקי אולי מישהו יכול לעשות פינגר פרינט ולדעת מה אני מריץ בתור שרת אני לא מריץ Javascript אני לא מריץ PHP אולי מה אני מריץ Node איך אפשר לדעת את זה אם אני מסתכל על הקוקי אז אני רואה שאני שולח קונקט SID שזה default קוקי name לסשן באקספרס לכם מומלץ לשנות אותו מאוד פשוט כמה דברים נחמדים שמצאתי על הידרים באינטרנט זה הידרים של PayPal מי שרוצה לשלח קורות חיים ועזמן ורדיט מעניין מעניין מהם חושבים כאילו כלים מריץ את זה ועשה דרוק אוקיי אז קצת אחר נתקדם רגע לעוד משהו שצריך להיות מודעים אליו שאנחנו עובדים בנאו-JS שזה הנאו-סקיול אינג'אקשן רוב הפרויקטים שכתובים בנאו-JS דרך כלל לא בכך מדברים מה-SQL מדברים איזשהו נאו-סקיול דטאבייסבנים זה המונגו קאוץ' וחולה וגם שם יש אינג'אקשנים דבר שקצת קשה לפעמים לעשות את הסווית שבראש שהיא מוחד למפתח שאולי קצת מכיר ומודע לזה בעולם ה-SQL שזה פרמטרים ופרמטר ביינדינג אבל ב-JavaScript ומונגו וחולה זה הכל דוקיומנץ ואובייקטים אז איך בדיוק מעבירים את זה אז אם אנחנו מפתחים אנחנו מכירים את הדוגמה הקלאסית אנחנו עושים סלק תוכבית וכולי דואגים לעביר בפרמטר שכך כך הולך לדטאבייס איזשהו אולי שסוגר יוצרים איזשהו טרוסטייטמנט מתעלמים מהמשך והדוגמה הקלאסית ל-SQL Injection ואז כתם מסתכל על קוד של מונגו db או בכלל של JavaScript של Node לא בכך נופל להסימון מהר נכון מה יכול להיות כאן לא טוב צריך כלומר חפשים אובייקטים אין כאן מה להזגור בדיוק אין כאן איזשהו פרמטר ביינדינג שצריך לעשות אוקיי אז אחד הדברים שחשוב להבין באקספרס זה שבאקספרס אנחנו לא משתמשים לא קוראים את הבאדי של הרי קוויסט אנחנו משתמשים בהרבה מאוד מידלוארים ומודולים אחר כך כך כדי להבין מה הולך שם בפנים אחד מהם זה משהו שנקרא הבאדי פארסר שמאפשר לנו בעצם לקרוא את הבאדי את של הפיילוט פרקטים של נורג'י שאתם תראו הבאדי פארסר נקודה ג'ייסון לוקח את מה ששולחים לו בבאדי ופרסר את זה לאובייקט אם הקונטנטייפ הוא ייסוק ג'ייסון הוא הולך מפרסר את זה ועוצר מזרובייקט ברי קוויסט-באדי אותו דברים יוארלן קודד אם זה נשלח כפורום כזה של html xwww פורום יוארלן קודד וכולי כל הקונטנטייפ הזה הולך מפרסר את זה ועוצר אובייקט אוקיי בוא נעבור לזה דמוכי נראה לי ישנים עדיין ישנים בוא נעשה רגע איזה רוקטור שומעים אותי אז מה שאנחנו רואים כאן זה איזשהו קודד קודד של נורג'ייס שמנסה בעצם להתחיל שרת ובפליקאיישן סבר אקספרס אני מתחיל עם האקספרס מודול לבוא באופליקאיישן שאני לוקח את בדי פארסר לוקח מונגוס איזשהו אודיים כזה איזשהו ליברי בעצם שמתממשק מעל מונגודי B אם אפשר לי למדל מידע מגדיר כאן את הפורט שאני רוצה לרוץ ולהזין בהככה לאוויב סרובר מתחבר כמובן לדטאבייס בעצם עושה אינישאליזציה ליוזר מודל שלי שזה איזשהו מודל שבו אני רוצה לרשום את היוזרים ואת הפרסורות שלהם כדי שמחור להתחבר למערכת ואחר כך כמובן עושה כאן איזשהו סיד לדטאבייס איזה יוזר נקודה אפטייט בעצם יוצר את היוזר זה שם הדמו לא מאוחר כמובן משתמש בהקספרס עושה את מה שאני רוצה לעשות אני בעצם רוצה לקחת כאן מהריקו הסטבדי את האובייקטים שנשלחים אליי כי אני רוצה לעשות בעצם לקבל אותם כג'ייסון כי הרבה יותר קל היא כמובן לעבוד הרי זה כל הרעיון במינסטקה, זה נכון בג'ייסון בסרובר ובפרונטנד אני רוצה בעצם לעבוד כל הזמן עם אובייקטים של ג'ייסון וג'ייסון כדי לא לעשות צריאליזציה המשיך הלאה המשיך לכאן וזה איזשהו הלוגין שלי זה איזשהו ראוט כשאני הולך לצלש לוגין מרנדר לי איזשהו עמוד html שכמובן יש שם איזשהו פורום פשוט של יוזרניים סיסמה ובואו תתחבר ובסופו של דבר אני מגדיר ראוט שהוא מסוג פוסט בעצם אני רוצה עכשיו לקבל רואים אני רוצה בעצם לקבל עכשיו את הריקו הסטבדי של הלוגים ואני מתחיל לחפש עכשיו מידה במון והדבר הכי פשוט שיש התיקציה הכי פשוטה יוזרניים תיקח מהריקו הסטבדי יוזרניים פסואלות תיקח את הריקו הסטבדי פסואלות כמובן שעם הצאת המש gezאת את פיסלי עם השעות את פיסלי וכו'. בסדר ובאנטים סטרית פורו עכשיו ובסקריץ בואו רגע אני אשלח זאת בסדר עשיתי אתין תיקציה רואים שלחתי יוזרניים ופסואלות ודמו זה בד Musical שעשיתי לעשי לדאטא ביס וכיבלתי בחזרה שאפילו את המון גוידי עד כאן אנחנו בסטייט פורט וכמה אני עושה כאן כאן אני כבר שולח חדר שהוא פוסט אני מגדיר אותו בתור אפליקאיישן ג'ייסו ואני שולח בדתה משהו שמון גו מכנה כאופירייטור של גרייטר דן ואז אני אומר לו שהיו זרניים הוא גרייטר דן כלום כמובן גם לפאסורד ואז שאני שולח את זה, אני מקבל את אותו ביגד בחזרה מה קרה פה רגע מה שקרה כאן עשינו בעצם בייפס Patch אנחנו שת supreשים ברי כו'י הולד ו cinco ב dura בעצם זה כמו שהאנו עשים אותו דבר כזה זה בעצם מה שעשה כי הרי כו'י הולד בייאזר ניים הוא כבר אובייקט שפרססנו הח��ות כמובן שלא עשינו announcements שום וליד Schön?", ואנחנו מקבלים ואנחנו עשינו את האויביקט ובטורות שאנחנו עשינו איזה JC Refet זאת הייתה הבעיה גם יש עם אותו מידלביר הזה שנקרא בדי פארסר ויוארלין קודת, כי בעצם אפשר להביא רדשהו פורום ונראה את זה תכף בסלידים בהמשך, שבעצם גם מקודד בעצם את אותו דולר גיטי, שככה ככה מפרססים לאובייקט, שהוא אובייקט שלמון גול לכל דבר, אין לו מושג ובסך הכל כך הוא עוד הרבה חפש את כל מה שהיו זרניים גדול מכלום, אז הוא מביא את כולם, ובעצם ככה התמונדדנו עם הבעיית הפתחה הזאת. דווגמה, אוקיי, אז מה אנחנו צריכים ללמוד מה שאנחנו עושים כאן? דבר ראשון זה validate input, ואנחנו מקבלים מידע, אוקיי, אז אותו אותה גישה, straight forwardית, כמו בכל שר הפיגות שאנחנו מפתחים, validate input, בוא תעבדה שהלנט והטייפ אותו דבר, בוא תעשה סאניטיזציה לאימפוט, יש כן נו דיימים, אתה יותר מורכבים לנו ג'ס מהמון גול שיודעים לעבוד עם פרמטר ביינדינג, רוצים להעביר להם איתשהו פרמטר למה הגיע מהאינפוט ולבדש את זה באמת זה. וכמובן סקיוריטי אינדפט, אפשר לבדוק את זה גם בצד של הקליאנצייד וכולי, כדי ליצור איזשהו שכוון נוספת של סקיוריטי, רידוס, בעיה אחרת, רגולר expression dos attacks, אוקיי, קשור מאוד לנו ג'ס, single-traded, יכול לרוץ על כמה פרוססים, נכון יש לנו קלאסטרינג, יש PM2 וכולי, אבל עדיין אם אני יכול להגיע למצב שאני תוקע שם את הפרוסס כבמוכוון או לא במכוון, את הבלוקינג בעצם operation אז אני יכול ליצור איזשהי דוסתק על המערכת. רגולר expression, זה דבר שאנחנו כמפתחים עושים הרבה מאוד, אה, יש לי email, בורגע, נעשה איזה רגולר expression קטן כדי לבדש את זה באמת זה, נכון, מאוד מאוד קורץ. אוקיי, אז בואו ניקח דוגמה. זה requirement, אנחנו השביעים עם הbusiness, עם הפונקשנה, עם הפרודקטונר, בואו אומר לנו, תשמע, צריך לעשות ולדאציה. אוקיי, יש סדש, הוא צריך להיות, הוא צריך להיות A-character ותתן לו כמה שאתה רוצה לטבים, אין בעיה. זה האינפוטפילט שלי, A, מפרובי אדם סוף. נשמע הסביר, requirement מהbusiness. אני מפתח, הולך, מכניס את הרג'אקס הזה. והרג'אקס, A+, חוזר לעצמו כמה שהוא חוזר, לבנתיים הכל טוב, אין בעיות. התקדמנו, כאשר חודשים אחר כך, הביזנס משתנה. יש מצב שמפתח אחר, כבר עובד על הקודש שלי. נכון? דברים משתנים, עניינים זזים. אבל שנינו עכשיו את הריקוירמנט. שאנחנו אומרים, תבדש הזה שאתה מכניס character A, אבל שהוא נמצא רק עשרה פעמים. לא נשמע כזה קשה נכון. מפתח זה, הולך ל-rejects one-on-one, מחפש רגע איך בדיוקוסים את זה, ומוצא שיש איזה משהו כזה. איזה שהוא, סינטאקס, כזה של קרלי-braces. וכמובן, אתה עושה קומנט לה למעלה, מעטי, copy-paste, מוסיף, ונראה, פצח הכל זה עובד. אוקיי? אז בוא רגע, נראה דמו. פצח הכל לרצתי. נראה שזה תקין, מצא, לא מצא. משתמשתי עם באיזשהו רייבר שתי חפני גלבור, משהו נקרא safe-rejects. אוקיי? אבל מה קורה, אם אני משתמש בסינטאקס הזה, ואני יוצר, נותן כאינקוט בעצם לבלידציה, אם אני רוצה לעשות על הרייג'אקס, 30a כאלה. בואו נשלח את יותר אינפוט. כאיזו עובד. ומנסה לעשות איבלוואציה לרגול הרקספרשן. כזה לקחת את יותר זמן. ככל שאני יעלה יותר את הקרקטרס שאני אשלח, הרגול הרקספרשן אנג'ן, מפתעציה. ומנסה לעשות על כל האפשרויות שאפשר כזה לעשות אינטרפיטציה לרגול הרקספרשן, אז אוקי החמון המון זמן. אז בעצם, מה שאנחנו מנסים להבין כאן, כשגם רגול הרקספרשן צריך להבין איך לעשות אותו, או גם אפשר גם לא לעשות אותו, ולתת לליג'ארי אחר לעשות אותו בשבילנו. זה כנראה עדיף. אוקי, ולא ישר לרוץ וליצור רגול הרקספרשן, כי אם אנחנו לא מודעים לכמה נעובד, ואיזושהי מתמטיקה שקוראת שם מאחרי הקלעים כדי להבין איך לעשות איבלוואציה, אז אפשר להגיע לכל מיני דד לוקים כאלה. ברגול הרקספרשן מאוד מאוד פשוט, כמו שראינו. וכי זה מה שקורה לשרת שאתה מנסה לעשות את האינטרפטציה. הלכים אחורה בזמן. טוב. דוגמה אמיתית, בסדר? יש איזשהו ליברי שנקרא נגושי איתו, לא קשור לעולם הסקיור איתי, משהו אמור לעשות זה לפרסר את האקספט לנגוויג'אדר, ולהבין באיזה עולם אתה נמצא, מבחינת שפה. רק זה דוגמה שלו אוקי, אינאקשן, כחלק מהמידלווארי של האקספרס. עכשיו אתה אומר לעצמך תשמע, 10 מיליון אורדות, מה לא נשתמש. נכון, מה נכתוב את זה עכשיו מאפס. בכל מקרה ברור שעשינו דיו דיליג'אנס וכל, אבל אז פתאום יצא איזו אולנרביל איתי בדיוק על זה. אוקיי, זה לא מזמן. היגח, נדבר איתך על סניק. אוקיי, אז קצת בספראקטיסס. אז דיברנו על validator.js קודם. באמת אתה מתראי כרגע לעשות איזשהו, איזשהו אופלודינג של מה שאנחנו עושים כמפתחים לפעמים לספריות אחרות, לדוגמה validator.js, עקב כל הבעיות שיש על רידוס, היא ספרייה שהרבה מאוד נבדקת, על ידי אנשים כמוך, הן פנטסט, סקיורי, טריסר, שזה וכולי, שהם עושים לבואו ולגלות את כל הבעיות שיש שם. אז הדיב שם יעשו את זה שם ונשתמש בה, מאשר שאני נעשה לצור בעצמנו, את כל הרגול הרקספראשן זה האלה, או לפחות נבדוק שהם טובים. Is email, is date, is fqdn, ועדיף להשתמש בה. דרך נוספת, זה להשתמש בסייף רג'אקס, זה איזשהו מודול שבטחו להגדיר לו איזשהו קומפלקסיטי של הרגול הרקספראשן, כי גם אם זה יש בעיה, אוקיי, או אם הוא יודע לעזור, את שהרגול הרקספראשן שכתוב הוא לא כתוב נכון, ואם כבר עושים משהו לבד, שרגול הרקספראשן הוא לבד, שלא מצאתם שום תחליף אליו, אז אולי עדיף להשתמש באיזשהו הלפר ליברי כזה, שרק יכול להרוץ על זה ולהגיד לכם אוקיי, Too or False, כאילו יש כאן בעיה, או שאין כאן בעיה מהרגול הרקספראשן, ולהמשיך על הדוגמה לרג'אקס. בנוסף, יש את הו, Validation Ragex Repository, אם אנחנו כבר בכנס הרלוונטי, על השספרייה שנועדה בעצם לעזור לנו בדיוק עם הדברים האלה, נמשיך. עולם אחר, שקיים בניו-JS, דיברנו קודם הרבה על NPM והאקוסיסטם. דבר שם חייבים, חייבים, חייבים להיות עורר לדבר הזה, כי אנחנו מושפעים. אין פרויקט של נו-JS, משמעותי שלא קיים עם Dependencies. הילר זו קוד פתוח, זה שרינג, זה ליברי, אז כולנו כודבים אותם, כולנו תורמים ומשתמשים באחרים. ולכן חייב להיות מודע למה שאתה מכניס עליך לבית. Sneak, פרויקט של חברה ישראלית, אגב, שבעצם מה שהוא נועד לעשות, זה לעבור על הדפנדנס שלך, אם הוא בודק לצורך עניין תפק את Json, סביב הגרסאות שיש לך, לראות אם הגרסה הזאת יהיה לבון הרביל את יולו, ממה שאתה עושה איקווייר, מסתכל גם על הנוד מודולס, מה שיש לך כרגע מותקן, האם הוא פגיע או לא, אז עוב את זה שביקשת את 1, 6, X. בששש, 1, 6, 2 שם, יש FIX, אבל לצלחה כבר יש עדיין 1, 6, 4. אז הצלחת מותקן בנוד מודולס ואתה פגיע כרגע. אז זה מסתכל בעצם על כל התרי וואו אם יש שם איזה שם בעיות. חוץ מזה, הוא יודע לבוא ולהגיד אתה לא יכול לבוא עכשיו ולשדרג את פרודקשן או מה שזה לא יהיה עכשיו ל1, 6, 9, המתוקן. אז אני, או אתה לא רוצה בגלל שזה שובר משהו אחר, אז אני יודע לבוא ולהגיד לך בו זה הפאץ' שצריך לשים עבור הגרסה הזאת כדי לתקן את הבעיה את הפתחה. אתה לא צריך לסתכל, אני אעשה לך פאץ' ורק תכניס את זה. כלי מאוד נחמד, איך נראה. פקט ג'ייסון לדוגמה. אפשר לראות שיש שם את מוקה. הגרסה מסוימת וסווי גלמטה, זה הפקט ג'ה אחרון. בעצם הכנסתי בחוונה את סווי כי סווי גגב זה כבר דפריקייטד ליברי בעולם נו ג'ייסט טמפלטינג. רצתי את צניק. לוקר לי את הצליח, חלק מהטסט. מצא כמה בעיות. מספר לי מה הבעיה. אני יכול לראות אם תסתכלו על הפרום, על החלק של הפרום, על אפשר לראות שהוא מצא את זה בתוך מוקה, בתוך גלו, בתוך מינימץ. זאת אומרת, לגמרי אנחנו מושפעים מהדפנדנסיז של הדפנדנסיז שלנו. אוקיי, NSP זה פרויקט אחר שנועד לעשות בעצם משהו דומה. דוגמה לאינספי ריפאות. שרינכרה בדרך נוספת. בוא נגיד שאנחנו רוצים עכשיו לבוא ובדקנו עשינו סניק, עשינו NSP, הגחנו את כל הסקיוריטי פנטסטינג, אמרו, הפרויקט שלכם מושלם, אין בעיות הפתחה. איך אפשר למנוע בעצם שלא יהיה לנו דפנדנסיז, שלא יהיה לנו אבגרידים בעתיד כשנתקין את הנוד מודולס. נכון, 1, 6, X, Tilda, שתיים משהו. אנחנו כל פעם עושים מהאבגריד שאנחנו עושים את ה-NPM נסטול הזה. אז מה ששרינכרה מאפשר לעשות, רגע שמריצים אותו, הוא עושה פינדאון, הוא לוקח, הוא עובר על הפרויקט, הוא מסתכל על כל מה שמותקן כרגע, כשאנחנו החלטנו שכרגע הזה המצב התקין, עברנו סקירותי טסט, ואפשר לבוא ולהגדיר טרי, שברגע שעושים NPM נסטול בפעם הבא הוא מסתכל על השרינכרה פשוט שהגדרנו ומתקין רק את הגרסאות האלה, כי זה ה-Wightless שלנו. אז זה היה קצת על סקירותי אופס, ואיך להכניס את זה בעצם כחלק מהבילט פרוסס, שככה תצניק, שככה תת NSP ופרויקטים אחרים בעצם, להתמיע אותם בתוך ה-CICD, בתוך הדיו אופס שלנו, ובעצם לראות אם יש איזה שם בעיות. דבר נוסף שאפשר לדבר עליו, סקירותי הזה סרוויס בכלל בעולם נוד, שעכשיו מתפתח מאוד. לראות שהדפנדנסיס שלנו, הם לא מתרחקים בעצם עם משהו שהוא גבוה לא מועד כאן. עד יש כמה פרויקטים שעושים את זה, דווי DM זה אחד מהם, דוגמה, אפשר לראות שיש דפנדנסיס, ובצד האדום, תשעה Out of Date, לא בהכרחין סקיר, אבל Out of Date. דוגמה אחרת, גם כן פרויקט שיחסית כבר אני אמרות פופולרי, אותו רעיון הם רק מאפשרים שם, מעל דווי DM, לעשות לינטינג וסטרטיקות אנלסיס וכולי. אפשר לראות למה עלה למשל את הדפנדנסיס, אנלסיס, ותמוקשהו Out of Date, אפשר לראות גם אינסקיור, ועוד קומיני דברים אחרים. ואם אני רגע רוצה לסכמת זה, ואני אעשה רגע, זה משהו נחמד חוץ מזה, אבל, כמה דברים שתקחו איתכם עלה? בסדר, כמפתחי נאו-GIS. אז הלמט, בסדר, הלמט עולוסה, אפשר להכניס את הידרים בעצם ל-CTTP וליצור דשים איטיגציה לכל ההתקפות. קוקיז, אופסקיור, דסשי נאים, תוסיף את הסקיור, פלאקס וכולי. חוץ מזה, כל מה שאמרנו על הנאו-סקיורי אינג'קשן, מספיק שהייתי עושה סטרינג, קאסטינג, על הריקו-איסט-בדי אוזר נאים, והייתי לגמרי עושה מתיגציה על הבעיה שראינו קודם. בסדר? כי לא רוצה לעבוד עם אובייקט, אני רוצה לעבוד עם סטרינג, ולוודאי שזה מה שקיבלתי. בנוסף, validator ל-rejection, קלימנה מרידוס, sneak, ו-dvdm-o-beathound. שני הלפני שנסיים, אבי, אתה מזמר נכון? אז אני פעיל, אני פעיל מאוד בפרויקט של מין-GIS, זה פרויקט מינסטייק, וכולי אני נותן איזשהו ל-full-java script framework, לגנות אפיקציות, וזה מה שמסכה בכלל בשעות הפני, אחת הדברים שהכנסתי, אני יודע שיש לנו שם בעיות כרגע של dependencies, אבל הנה, הכנסתי כאן, sneak support, כחלק מה-CICD, אחת הסיבורת שלא עשיתי לזה מרדג, שזה כי זה כרגע שובר לנו את הבילד, אבל בואו תראו את כמה זה פשוט, כדי להכניס הדבר הזה למוצרים, הרבה יותר קל למוצרי אופן סורס, כי הכל שם גבר בפתרונות, מה שעשיתי, מה שעשיתי, אני אמרתי לטרביס שלי, שזה בעצם מה שעכשיו מריץ לי את CICD בענן לפרויקט, בכל פעם שמישהו שולח לי pull request, סופו של דבר, פרויקט פתוח, אני רוצה לדעת שמי שתורם לי קודני, ידע אני לא נמצא בדשי בעיית הפתחה, אז אמרתי לו, תתקין לי את סניק, ואז אמרתי לו, לפני שאתה בכלל מריץ את את הטסט, סקריבת כדי לבדוק שהבילד עובר תקן, בואו תריץ לי סניק טסט. אני אכניס את זה שהם פקגז אחרים, או מודקנים, או לא משנה מה, או להכניס את הפקטים של סניק, אבל אני חייב להכניס אותם כדי שהבילד הזה יעבור. בעצם, בצורה הזאת, כבר עשיתי את השימטיגציה ברמת CICD, והסקירתי, אז זה סרוויס. אני כחוד דוגמה, בואו נחפש רגע את הפרויקטים של הורסף, נוד גאות, ויחד איתו, אני כנס לסניק דשבורד, ואני עשרגה לבדוק את הפרויקט הזה. לא תחתקין כלום, מון בקלארד, הוא הולך לוקח את הרפוא, מסתכל מה קורה שם, אז אם מישהו בא לו לתרום איזשהו סניק לסייסטי D של הורסף, מצאנו שם כמה בעיות. זהו סיימא. אישו את סביעה, אני קודם. כן, רגע. לגבי, אה? אוקיי, HSTS. אם ברגע שקבתי את ההדר הוא קבוע בברוזר, ברגע שהסרוור מכזיר לך אותו, יש שם איזה שהוא Request Time, שזה המקסיד שלא כדי להבין אותו. חוץ מזה, אמור להיות איזשהו פרוסס, שאתה יכול להכניס את זה לא איזשהו White List, כי גם על הריספונסור, הראשון מהסרובר, מישהו יכול להיות איזשהו מנין דמי דלתק, ולהחליף את זה. אז איזשהו White List שיודעים לעבוד איתו, אני לא זוכר עם Google, או מישהו אחר בעצם עושים אינטיננסל זה ובעצם דואג שגם מהריספונסור הראשון אפשר לדעת עם זה HSTS או לא. Google ומיקרוסופטים. רגע, הוא בסופק אדם? האינג'ק של איתו חמונגו. אוקיי? מה את זה? מה דרך למנוע? יש, יש. אני אראה. יפה. אם הייתי עושה שם קסט לסטרינג, על הרי כואסט Buddy User Name, בעצם מה שהייתי מקבל ב User Name, זה היה סטרינג, זה היה בדיוק המקף, דולר, ג'יטיב, המונגו לא ימוצא יוזר כזה פשוט. זה דרך אחת, ויש עוד אחרות. זה ייחודי, ששם לא הסכיעו על דת הבססים. זה מונגו אחרם. אז זה מאוד תלוי.