 אנחנו כאן היום, שלדבר קצת על אופנסורס, להתמקד ב-NPM, שומעים אותי בסדר? שמון קהל פשוט. אז אנחנו נתמקד ב-NPM, כל מיני בעיות שיש ב-NPM, חלקם נחקרו, חלקם אנחנו חכרנו. אני אמית, זה ארס, שנינו מצ'קמרקס, ארס מוביל את הצוות סיכיורטי שלנו, ואנחנו נתחלק על ההרצאה הזאת, אז נגש ישר לעניין. אז אופנסורס, יש משהו כמו כנראה, 90 אחוז ומעלה מהתוכנות היום, מהאפליקציות היום שמשוב הקורת על ידינו, על ידי כל חברה כנראה בעולם משתמשות באופנסורס ואופנסורס זה אחלה. אנחנו בעד אופנסורס, אבל יש כל מיני דברים שצריך לשים לב אליהם, כמובן ונדבר עליהם. במקרה הזה נדבר על Node.js, ספציפית ועל NPM. Node.js תופס תיאוצה, אנחנו מדברים עליו כבר כמה שנים, עשינו כמה הרצאות בנושא, על כל מיני פרצות ספציפיות בנוד.js, אבל הפעם דווקא נתמכד במודולים האופנסורסים של Node.js. טוב, שחשבתי על ההרצאה הזאת, ההרצאה הזאת מדברת על Dependency, על הכלויות בעצם בין המודולים השונים באופנסורס, ולחלקנו שעברו את גיל 30 כנראה הפרסומת הבאה מוכרת, וזה הדבר הראשון שהתקשר לי, כשחשבתי על המבנה של הכלויות. ועשה. יש שרטים שכדאי לראות שוב. סליחה, אתה יודע שבכל פעם שאתה שוכב עם החברה שלך, אתה שוכב עם מחבר של השעבר. שומעים? אז הסיור מת קצת פחות רלוונטית, ואני לא חושב שכונדומים יעזרו לנו עם התלויות של אופנסורס, אבל הרעיון, מאחורי ה-Dependences, מאחורי מה שאנחנו משתמשים בו היום, שבעצם אני היום משתמש באיזשהו מודול שלקחתי, מ-NPM, או מגיטה, או ממשהו, הוא תלוי במודול אחר, וזה תלוי במודול נוסף, ובמודול נוסף, וזה מאוד דומה לפרסומת הזאת משנות ה-90, או תחילת שנות ה-90, סוף שנות ה-80. הרעיון הוא אותו דבר, כשאנחנו משתמשים במישהו, אנחנו צריכים לבדוק שכל העץ, האירארכי, גם כן כולו מוגן. הרעיון להרצאה הזאת תתחיל מאיזשהו סיפור שחלקם כנראה מכירים, מישהו מכיר את הסיפור של Leftpad, מכירים. אז Leftpad היה איזשהו מודול NPM-י של מפתח בשם אזר כוצ'ולו, כוצ'ולו, כנראה, אמרו לי שומעים זה כוצ'ולו, שהיה די אנוני מי, ומה שקרה זה שהוא להסתחסך בצורה כזאת או אחרת עם מי שמתחזק את ה-NPM-ריפוזיטורי, ביקשו ממנו להחליף שם של אחד או מודולים שלו, הוא כעס, היא תצבן, וזה בקיצור בסופו של דבר הוא החליט לשחרר את המודולים שלו מן NPM-ריפוזיטורי ומחק את כולם, ובעקבות זה קרו כל מיני דברים מעניינים. מתחיל להיות קצת רעש ברשת. אנשים דיברו על זה שהם לא מצליחים להגיע ל-NPM, קודם כל מיני שגויות, יש להם כל מיני תקלות, לגבי Leftpad, ואף אחד לא הבין בדיוק מה קרה, שאמר מאוד עלו על זה שה-NPM הוא שר מהרשת, מה-ריפוזיטורי, ואחד הדברים המעניינים פה שמישהו אמר, זה מושכתוב פה שורה אחרונה, You should bug the author to publish it, or use the name yourself. שזה בעיה, ואנחנו נדבר עלייתכף, אבל העובדה שאפשר להשתמש בשם שהיה קיים, ולהשתמש בו לצורך אחר, חוספת פה איזושהי בעיה מאוד מאוד מהותית. Leftpad היה בשימוש של בערך 40 מודולים ב-NPM, הוא לא איזשהו כלים מתוחכם, הוא בסך הכל... אני אנסה לדבר קרוב יותר. טוב, הנה, זה טיפה יותר טוב נראה לי. אז הוא בשימוש של 40 מודולים שונים, קטלות ביניהם, ריאקט ובבל, שבשימוש של פייסבוק ו-RBNB, וגם הם נתקלו בכל מיני תקלות, ברגע שהוא יסיר את המודול שלא מהרשת. כמה דברים קרו בעקבוצה? דבר ראשון, אזר כבר לא כל כך אנונימי. הנה הוא, נראה בחור נחמד. והוא יצא צליחה מאוד מעניינת, הוא יצא דיון שמאוד חשוב לדבר עליו, שדהי מפתיע של לא דיברו עליו מספיק לפני זה. אחד הדיונים זה האם מישהו שהזין מודולים, או הבעלים של מודולים שנמצאים בריפוזיטור, הוא יכול פתאום על דעת עצמו להעשיר את כולם, שאלה נוסף את זה, מה באמת קוראים כל המודולים הקיימים? כאילו, מה קוראים השמות שלהם? מישהו אחר יכול להשתמש בזה, זאת אומרת שאני יכול לשים מה שבא לי שם, אני יכול לקורא לזה לב טפאד, ואנשים ימשיכו להתקין את הלב טפאד, אז זה במחשבה שזה דבר אחד, ובעצם, מפיצים דבר אחר. טוב, NPM, למי שלא מכיר, Node Package Manager, Open Source, לגמרי, יש משהו כמו 300 אלף מודולים שונים היום, המחקר קצר שאנחנו עשינו, מגלה שהם מתוכם 100 אלף בערך, הם לא מקושרים לכלום וכלום לא מקושר עליהם, זאת אומרת שהם כנראה כל מיני קלי בדיקה, או ניסיונות של מפתחים למיניהם, אבל לעומת זאת יש כאלה שיש להם 80 אלף מודים שתלויים בהם, 70 אלף, זאת אומרת שאם אני היום משתמש באיזשהו מודול, אני צריך לקחת בחשבון שנוספים, השתמשו בי, אני השתמש בנוספים, ובמי אני משתמש, ומה זה, מה שאני משתמש בו. כמה היליץ על איך NPM Repository עובד. הדבר הראשון, שהוא נחמד, אבל הוא גם בעייתי, זה העניין של הסמנטיק ורז'ני. זאת אומרת שאם אני היום יש לי מודול קטן, ומשתמשים ב80 אלף מודולים שונים, ברגע שאני משדרג את הגרסה שלי, כגרסת bug fix, אוטומטית, בערוב המקרים אלה אם כן, אני מגדיר את זה אחרת, אוטומטית, המודולים שמשתמשים בי, שדרגו לגרסה הבא. זאת אומרת, אני יכול לעשות שינוי במודול שלי, ו80 אלף מודלים אחרים, ישדרגו לגרסה האחרונה שאני שיניתי, אני לא משנה מה שמתי שם, זה אוטומטי לגמור. בעיה מספר 1, עם הצד החיובי, והצד השלילי שלה כמובן. והיה נוספת persistent authentication. ברגע שאני משתמש בנוד.js, התחתית החשבון שלי, אני עושה npm install, אני מתקין whatever, אני רוצה להתקין. מאותו רגע כל עוד לא עשיתי logout, יזום, כל מי שניגש למחשב שלי, ניגש לעמדה שלי, יכול להריץ מה שהוא רוצה, לא צריך שום זיהוי נוסף. גם כן, בעיה שנוצלה, תכף נראה איך היא נוצלה. centralized repository, הכל מודקן, מריפוזטורי 1, מרכזי, ברוב המקרים, חברות משתמשות בריפוזטורי הזה, של npm, שזה בסדר, זה נוח, אבל שוב, כמה בקרא יש על הריפוזטורי הזה, שאלה שנתקלו בלא פעם ב npm, עם בעיות שצעצו. בואו ניקח דוגמה, לקחתי באמת מודול הקראי, שנקרא active directory, שמה שהוא עושה, אלדה authentication or authorization, התחלתי להסתכל על מה רשום עליו, מה אנחנו יודעים עליו. אז אנחנו יודעים מה הוא עושה, אנחנו יודעים שבחודש בממוצא יש 13 אלף אורדות שלו, שזה יחסית מעט, אבל זה עדיין מספר מרשים, וכתוב שיש לו ארבע תלויות, זאת אומרת, ארבע מודולים נוספים שהוא תלוי בהם. הלכנו והסתכלנו מה זה, התלויות האלה. מה שעשיתי פה, זה פשוט הרצתי איזשהו התקנה של active directory, אני לא יודע כמה אתם רואים שם, ובדרך קשה לראות, עשיתי npm install, active directory, פשוט מאוד, אציע בלי שום פרמטרים נוספים, הוא מתקין, מסמן לי את התלויות, וכבר פה יש לנו איזושהי רמיזה קלה, לזה שאני לא תלוי רק בארבע האלה, אם אתם רואים, יש פה, אני אנסה לסמין עם אכפר, יש פה בסוגריים, כל מיני שמות נוספים. אז בואו נראה שלב נוסף, אמרנו ארבע תלויות, ביניהם underscore, LWJS, בניאן ואייסינג. כל אחד מהם הוא רובם, יש להם קלויות נוספות. בסופו של דבר, זה אומר שאם אני עתכנתי עכשיו את active active directory, יש לי 19 מודולים נוספים שאני תלוי בהם, אני לא מכיר אותם בכלל, אני לא יודע מי הם, אני לא יודע מה הם, לא בדעתי אותם כנראה ברוב המקרים, ויש פה איזושהי בעיה. מתוך, 19 האלה יש את loadash, הצץ בכל מקום, כשעשינו את המחקר שלנו, נשמת את כל המודולים מהnpm ריפוזיטורית, כל הכלויות, בינינו מנץ כלויות כזה, ולא יודע שמה שמעניין בו, זה ששמונים, כמעט 90 אלף מודולים משתמשים בו. זאת אומרת שכמעט כל דבר שנתקין מהnpm ריפוזיטורי, נשתמש בלודש. יש לו 30 מיליון לעומת האו, שהיה לו 13 אלף, active directory, לזה 30 מיליון הורדות בחודש והוא לא תלוי באף אחד. כאילו, כולם תלוים בו, הוא לא תלוי באף אחד. למזלנו, הוא לא רע, כרגע. מה שהוא עושה זה, מה שמוגדר פה, modern javascript utility library delivery modularity, performance and extras. לא יודע, לא חכרתי לאומק, מה זה האקסטרז האלה, אבל כנראה שהוא מאוד שימושי, כי המון אנשים משתמשים בו. המון מודולים משתמשים בו. 10 אלף פקיג'ז משתמשים בלודש. אז בוא נראה כמה דברים שאפשר לעשות. כמה דרכים בעצם שאנחנו יכולים בעזרת החולשות של npm לתקוף משתמשים של npm. אחד, מאוד פשוט, ניצור מודול. חלקנו פה יודעים לכתוב node.js אפשר ליצור מודול שמיישר שדות שמאלה, מיישר שדות ימינה לישראלים ולהפיץ אותו. אין שום סיבה בעולם, שמודול שאתה מפיצים ועובד טוב לא יצבור תעוצה לאט לאט. במיוחד אם אתם קצת דוחפים לו שיוו ככה נחמד מהר מאוד אפשר להגיע למצב שמישהו תלוי בכם. שם מישהו שזה שתלוי בכם יכול להיות גדול יותר, יכול להיות שהוא בשימוש נרחב כמו המקרה שהיה לנו עם לף פאד פייסבוק AirBnb, שתמשו בתלות הזאת שלא בלי אפילו לדעת. אז זה דרך אחת להפיץ את מה שאתם רוצים להפיץ כמובן שברגע שהפצתם את הגרסה הראשונה והיא תפסה, אתם יכולים משם והלע את הסקייסד הלימית מה שנקרא. דבר שני שאפשר לעשות זה מה שנקרא טייפו-אטאקס ועשו על זה מחקר מעניין דווקא בחור שאני לא זוכר את שמו שם כל מיני מודולים עם שמות דומים. היה אחד השמות היה קופי סקריפט. אז הוא עשה מודול שקורנו קופי סקריפט אבל עם F1 או עם E1 והוא גילה שהחוז מאוד מאוד גדול מהאנשים שהתקינו את קופי סקריפט עשו איזשהו טייפו והתקינו את הקופי סקריפט שלו וקופי סקריפט שלו כמובן הוא יחל לשים מה שהוא רוצה. אוקיי, זה עוד דוגמה. דיברנו על העניין של הזיהוי לפי שם במקרה של לףטפד למשל ששחרר את השמות של המודולים שלו לעולם. כל אחד היה יכול לבוא לחתוף את של 40 מודולים שונים להתקין אותו בתור לףטפד חדש להגיד, אוקיי, הנה, לףטפד יש לכם אותו טענו זה שומר על אותו שם בדיוק זאת אומרת שאם אני עושה אינסטור לףטפד הוא יתקין את מה שאני עכשיו שמתי בפריפוזיטורי והתוצאה היא שאני יכול לשים שמה שאני רוצה כמובן כמובן שאפשר לפרוץ לחשבון של משתמש לגיטימי ולשחק לו בכל הזה כמעט בכל מקום ההתערון פה ברגע שפרצת לחשבון ש שיש לו מודול שבשימוש נגיד פרצתי ללודה שיש לו 8000 מודולים ואני משנה אותו אני ככה את בקטי 8000 אנשים 8000 פקיץ שונים ואחרון שזה גם בעקבות מחקר שמישהו עשה, זה הסלפ רפליקטינג וורם שזה בעצם מנצל את כל החולשות של NPM בואו נראה איך עושים את זה דבר הראשון שצריך לעשות זה באמת לגרום למישהו בעל מודולים לגיטימיים, להתקין את NPM שלך אפשר לעשות את זה בסור של אנג'נירינג אפשר לעשות זה בלפרוץ לא לחשבון אפשר לעשות את זה בכל מיני דרכים אחרות ברגע שהוא התקין התולת שאנחנו מריצים שם מתקין, מייצרת מודול חדש אוקיי, באינסטול בשלב האינסטול יש את ה-lifescycle scripts אני יכול בעצם להריץ סקריפטים עליך האינסטול שמייצרים עוד דברים אני מאוד לא מוגבל כאילו אני יש לי את כל ההרשאות שיש ל-user שמריץ את השוא האונר של האקאונט ברגע שעשיתי את זה את זה רצתי NPM מודול חדש האינפיה מודול החדש הזה פשוט מותקן בעזרת NPM אינסטול כמובן הוא מייצר איזשהו אוקי יש את המודול החדש תחת ה-user ה-legitimi זאת אומרת אני ככה עוד פעם אדוגמה את ריאקט אם אני מצליח לפרוץ לאונר של ריאקט שזה במקרים כאלה זה כמה אונרים אני יכול לגרום לו להתקין מודול חדש המודול החדש הזה במקרה הזה נתתי לו שם קצת פחות לגיטימי כמובן שמי שתוקף באמת לא יעשה את זה ככה מעלי ש-npm מודול מאותו רגע הוא מפאבלש את עצמו במודולים של הבחורצ'יק עוברת אותו תהליך של התולת שמייצרת npm והלה והלה והלה בנוסף לזה הוא משדרג את הגרסה אנחנו מדברים עכשיו על העניין של הגרסאות הוא משדרג את הגרסה של המודולים ה-legitimi בפלוס אחד של כל מישהו מתביק ואז הם אוטומטית מורידים את הדיפנדנסי זה חדשים וככה הלה והלה תהליך הראשון של ההתקפות האפשריות ערז עכשיו ייקח ידבר קצת על נושא בזווית שונה טוב אז אחרי שעמית נורא תחיד אותנו עם כל הזדוניות הזאת משאלנו את עצמנו עם החבר'ה שעומדים אחור npm בכלל יודעים על כל זה כמובן שהם יודעים הם תואנים שהכול עובד כמו שצריך מדובר בדיזיין אין ממש בעיה שאנשים ידעו לשמור על עצמנתי טוב ויכול להיות שם ישנו קצת את העניין שצריך לעשות שאלוגים למשל הוא קבוע לתואר רפוזיטורי והקצרו אבל כרגע הם לא שוקלים לעשות שום נבר כזה ואז אמרנו לעצמנו שבעצם הבעיות של npm לא חייבות בהכרח לבוא מכיוונים של דיזיין לקוי כזה שמאפשר שותן במה לזדוניות אלא גם יכול הרבה פעמים לבוא תוך מפתחים שקוזבים חבילות שזה יכול להיות באמת כל אחד שלא יודעים, לא יכולים, לא מודעים לפיתוח מובטח והחלטנו לבדוק את העניין הזה בוחן פטע מה הבעיה בקוד הזה יש פרס זה גם התחלה של רעיון עבודה כי אנחנו מחפשים אז זה השאלה הראשונה זה התחלה, זה רק חלק אני פונקציה אמרו לי עוד שלוש נקודות אז זה שאין סוגר זה לא בעיה אני אדברר את זה קצת זה סוג של מידלואר שמקבל רקואסט ממשתמש ומעוניין לבדוק שאין בו נלביץ ביוער אל רואים משהו מה? מודקת הראשון אבל כל עוד יהיה שזו ממשיך שזה אומר שזו ממשיך וממשיך אין לסלופ היה פה איזה אין לסלופ אחד היה עוד משהו שמלמל ולא שמענו שם מאחורה, בחור בלפטור טוב, נחזור לזה אוקיי, אז מה בעצם עשינו עד עכשיו קלטנו לעשות איזושהי בדיקה קטנה כזאת לראות איפה אנחנו עומדים לקחת כמה עשרות חבילות NPM ולראות מה אנחנו יכולים להוציא אז בשביל הקטע לקחנו את ה-Top 50 Popular Packages של NPM לקחנו את ה-Top 50 Depended זאת אומרת אם דיברנו על לודש למשל שהוא מאוד מאוד תלויים בו, אז זה כמובן אחד מהם ועוד כל מיני Packages שונים שהם גם Populari וגם הם סוג של Middleware כזה שמקבל אינפוטים ממשתמשים ורק אז מעביר אותם לפונקוציונליות של החבילות NPM עשינו איזושהי אנליזה בדיקה לתוצאות ואנחנו בעיות התחלנו תהליך של Responsible Disclosure שקלל לצור קשר עם המפתח שכן יעשר שבאמת הוא רואה שיש בעיה אחר כך לחקות לפאצ' שיצא ואחר כך לפרסם את העניין כמו שאני מניח שרוב מי שמתעסק פה בהפתחת מידה וזה כולם כאן יודעים שהחלק הבעייתי אנחנו התחלנו לא מזמן מה שאומר שאנחנו מחכים לכולם בערך, אף אחד לא ממהר לשחר שום דבר ולכן אנחנו לא נצא פה בשמות מדויקים של כלום דברים מתפרסמו בקרוב אז אוקי זה מה שאמרתי קודם, לקחנו באמת מתוך האתר של NPMJS הם מפרסמים את החמישים פופיולר ולקחנו מתוכם גם את החמישים Most Depended הפונק, שזה כמובן רקורסיביס כמו שמי דיבר קודם על עץ התלויות אז לקחנו את אלה עם התלויות הרקורסיביות הכי גדולות ועוד כמה חבילות מעניינות שרקנו אותם קודם כל מה שאפשר לראות פה זה שהשונות מבחינת אורך הפרויקטים יש פה מקבץ של 10 הנה לודה שלנו המפורסם באמצע, אפשר לראות בתורה אחרון זה מספר שורות קוד אפשר לראות שיש חבילות קטנטנות של 25 שורות קוד כמובן שהם בדרך כלל פחות בגיעות כי מאוד מאוד קל להסתכל עליהם לעומת זאת לא דעש עם כמה זה, מ-28 אלף שורות קוד זה באמת עולר שבצערי כזה מוגזם כנראה שיותר קשה לבדוק אותו זה הקודש שראינו קודם בעצם כששרקנו אז הצץ לנו הבעיה הזאת של דינה אלופסר ביסבלופ מי שלא הבין קודם עשה פה המפתח זה לקח איזשהו URL שהוא קיבל בריקויסט משתמש, בלי לבדוק את אור קו שום דבר אחר ופשוט עובר עליו ומחפש נלביץ במידה ואנחנו שמים חלק מאוד מאוד גדול בפיילאות של נלביץ אז זה פשוט לא יגמר העניין הזה יצרנו קשר עם המפתח רצינו לראות על מה בעצם מה היא עושה, כמה היא בעייתית אז ראינו שזה מדובר בחבילה שקוראים לייק סטטיק זה מידלואר שמה שהוא עושה זה נותן נותן אפשרות לכל חבילה לפתח כסרבר של סטטיק פיילז פשוט מגיש כבצים באופן סטטי לכל מי שמשתמש בה משימושיות מאוד נחמדה הוא די פופולרי, לא מאוד אבל די, המספרים האלה אבל שוב, אנחנו מדברים פה על סטטר גודל של 300 אלף אורדות ושימושים בחבילה הזאת בחודש והחלקה יותר מעניינו שיש לנו 369 החבילות NPM אחרות שנשמחות ומשתמשות באקסטטיק, המשמעות היא שכל מי שמשתמש באקסטטיק חשוף לדינה אלוף סרוויס הזה כל מי שמשתמש בכל אחת מי 369 החבילות האלה ובדינה אלוף סרוויס אז התחלנו לצור קשר עם המפתח התגובה הראשונה הייתה מה פתאום מנסיקוי זה הכל בסדר, הריפלייס זה פעולה זולה, ונעשית מאוד מאוד בקלות ולכן נעלסנו לשלוח לו את הפרוסי שלנו, שלחנו באמת פיילוד מאוד גדול, אפשר לראות בפיילוד שפשוט עוספנו נעל בית כיד המלך כשהגענו לפיילודים של 32 ו35 ובאית פכנת גודל אז הגענו ללגים של כמה שניות וכשגענו לפיילוד של 86 בית הצלחנו בעצם לגרום לדינה אלוף סרוויס והשרת שלו נפל אחרי שהוא ראה את זה אז הוא אמר אה אוקיי אנחנו כיווינו שהוא יעשה שבדיקה חכמה כמו פשוט לבדוק את אורך הפיילוד בנקום זה הוא פשוט הכניס את כל הקוד לקומנט סוג של תיקון אני מניח זה לא פגיע יותר אז זה תיקון מה אוקיי זה פתור מוצלח אין הפגיעות לא קיימת יותר כן לא תן איש ואינימור והכול בסדר אוקיי עוד דבר שמצאנו אני לא אתן פפרטים על חבילה כי שוב עוד לא הגענו לשלבים הסופיים הגענו לקומן ניג'קשן איזשהו משתמש להכך משתנה מה משתמש עצמו ובלי לבדוק אותו, בלי לעשות שום דבר פשוט משתמש בוקי ארגומנט לאופריטינג'יסטם איפה שרץ החבילה עצמה על השרת מה שקיבלנו מהמפתח אה באמת יש בעיה זה לא אני עשיתי מישהו עשה את זה פעם אנחנו נוריד את זה עוד לאוריד אבל שוב איפה לא בדק את זה? זה היה שם אף אחד לא חשב לבדוק זו מצאנו עוד כל מיני דברים חלק בעזורים יותר מעניינים ויותר פופולאריים חלק פחות אני לא להיכנס לעקול אבל באמת מצאנו מגוון יפה מי אקסססים ודיניי לופסרוי סוגים משונים סייסט ואינג'קשן שהנחמד כל מיני שימוש ברנדום נס שהוא לא באמת רנדום זו זה בעצם מה שעשינו וראינו שוב התוצאות עוד לא סגורות וסופיות ואין לנו סטטיסטיקה אבל התחושה היא שכנראה יש איזה שיבעיה האופנסורס הוא אופן ובסדר גמור אבל כנראה שאנחנו צריכים לקחת בקצת ערבון מוגבל יותר ממה שאנחנו באמת לוקחים את השימוש בחבילות נדבר על קצת לטפל בזה טוב, נשאר לנו עוד כמה סלידים בודדים צ'קמרקס טוב, אז בוא נדבר בליל נדבר באמת על כלים אנחנו באורס ואנחנו ונדר ניוטרול פה אבל באמת צ'קמרקס עושה את העבודה נדבר על כמה דברים שאנחנו יכולים לעשות בתור מפתחים, בתור מי שמתחזק את החשבונות האלה יש כל מיני פעולות שמאופשרות על ידי נודג'ס, על ידי נפיהם לרוץ בצורה יותר בטוחה יש כל מיני פעולות גם שאנחנו צריכים לעשות לקחת אחריות על עצמנו דבר ראשון, לא יודע אפילו אם הוא רשום פה נראה לי שכן לבדוק, כאילו להסתכל ולבדוק אפשר גם בעזרת הוויב לחפור ולבדוק מה הקוד שאנחנו מתקנים, עכשיו שאנחנו מתקנים משהו לא לבדוק רק את הקוד של מה שאנחנו מתקנים לראות באמת במה אנחנו תלויים כי הרבה פעמים תקיימים דברים באמת כמו שאמרנו זה הרבה פעמים קוריא אוטומטית גרסאות שונות תיקוני בגים, ולכתדה מה יש חשם כמה שאנחנו מודעים לסיכירותי ולאפליקאיישן סיכירותי ולסיכיר קודינג כנראה שרוב המפתחים שמפיצים שם את המודולים שלהם לא מודעים כמונו ולא בדיוק עושים את המאמץ לבדוק אם הם חשפו איזשהי חולשה בקוד שלהם אפשר להריץ אין פיימן סטול ולהתעלם מסקריפטים זה לא נעים ולא נוח כי הרבה פעמים באמת זה מוניה ממך את ההשלמה של ההתקנה אבל רצוי לבדוק את זה אפשר לעשות מה שנקרא בעצם לקביע את המודול שלך לגרסה ספציפית של דיפנדנסיס זאת אומרת שמע עכשיו אני משתמש רק בגרסאייקס, לא משנה אם יש הדרגים גרסאות משנים גרסאות וזה אני נשאר על הגרסאה הנוכחית ככה אני מגן על עצמי מהתקפות כמו שדיברנו עלי הקודם עם התולהת הזאת השליל להגיד תולהת בעברית כתבתי פה אני יודע שזה לא כל כך פופולרי אבל sometimes it's better to write your own functions לפעמים זה אפשרית, אני יודעים ישור שמאלה, ישור ימינה פונקציונליות פשוטה לפעמים שווה לכתוב את זה במקום להסתקן וכמובן לעשות logout אתם לא משתמשים, זה כאילו א' ב' של הפתחת מידע, npm כרגע לא עושים לזה enforcement מומלץ בחום לעשות logout מבחינת האינטר פייז החברה אפשר להתקין ריפוזיטור אילוקלי ולעשות enforcement שהשימוש יהיה רק דרכו זה ברמה של החברה אחת הדברים שחלק מהחברות עושות הרוב כנראה עדיין לא זה הכל אנחנו מגייסים תודה רבה