אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » בדיקה עם npq כדי לוודא התקנה תקינה של מודולים

בדיקה עם npq כדי לוודא התקנה תקינה של מודולים

רן בר-זיק אוגוסט 5, 2018 6:06 am 5 תגובות

משתמשים ב-node.js? כך תוודאו שאתם לא מתקינים מודול בעייתי

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

במאמר הקודם סיפרתי על snyk, שזה יופי של כלי לבדיקת חבילות תוכנה לפרצות ידועות. אבל אבטחת מידע לא קשורה רק לדברים שמצאו. כשמתכנתים (במיוחד צעירים אבל לא רק) מתקינים מודולים, הם לא תמיד שמים לב לסימני אזהרה. אם המודול סוגר את הפינה, אז הוא סוגר. מתכנתים יותר מבוגרים ישימו לב לדברים אחרים – כמה התקנות יש למודול? האם המתחזק שלו באמת מתחזק אותו או יצר אותו לפני שלוש שנים ושכח מזה? האם יש לו בכלל README? ועוד שפע של פרטים. על מנת להכניס סוג-של-אוטומציה לסיפור הזה, יש את מודול npq. מי שעומד מאחורי npq הוא לירן טל, מתכנת רב פעלים. מה שמעניין הוא שהוא כתב ספר (מוצלח במיוחד ומומלץ) על אבטחה ב-node.js שדני גרנדר, המייסד של סניק, עשה לו technical review. עולם קטן, לא?

אז מה זה npq? הוא מעטפת מעל npm שעושה את כל הבדיקות האלו. כדי להתקין אותו, אנחנו נכתוב

npm install -g npq

כן כן, גם ב-cmd זה יעבוד לכם. עכשיו, אפשר להשתמש ב-npq בדיוק כמו npm (אפשר גם להשתמש בו מעל yarn אם אתם משועממים מספיק). נניח ואני רוצה להתקין את express, כל מה שאצטרך לעשות זה npq i express. המודול npq מעביר את זה ל-npm איך שהוא (הוא לא "מחליף את npm) אבל לפני זה עושה כמה בקשות חשובות במיוחד:

npq i express  √ Checking package maturity  √ Identifying package author...  √ Checking package download popularity  √ Checking availability of a README  √ Identifying package repository...  √ Checking package for pre/post install scripts

npq יבדוק כל מיני דברים – כמה התקנות יש למודול, האם יש מייל לעורך שלו, האם יש מספיק מורידים למודול והכי חשוב: האם יש post\pre install scripts חשודים. שימו לב שלמודול הזה יש אינטגרציה עם snyk – אבל היא תעבוד רק ללקוחות משלמים של snyk. לירן אמר לי שהוא עובד על חיבור גם למסדי נתונים חינמיים (שייתכן שהם פחות טובים). אם אתם רוצים להריץ אותו בלי שהוא ינסה לעשות אינטגרציה עם snyk, צריך להכריז על משתנה סביבה של

MARSHALL_DISABLE_SNYK=1

בחלונות עושים את זה ככה:

setx MARSHALL_DISABLE_SNYK 1

ואז הבדיקה תדלג על snyk.

אם אני אנסה להתקין מודול מפוקפק או אפילו מודול שיש איתו בעיה, npq פשוט יתריע לי (לא יחסום) והבחירה היא שלי. בדיוק כמו מתכנת מנוסה שיאמר לך "תשמע יא באבא, זה לא רעיון טוב להתקין מודול שקוראים לו jquey".

שילוב של snyk ושל npq הוא שילוב מנצח. באמת. מצד אחד snyk (וגם 'npm audit' ואחרים שדומים לו) יתנו תמונה מלאה על חולשות ידועות. מצד שני, npq יתן לכם התראות על code smells בכל הנוגע לחבילות ויתריע על דברים משונים שיהיו ב post\pre install עוד לפני שמישהו ידווח. קריטי במקרה של חדירות למודולים פופולריים (כמו eslint שהשתמש ב post install) ויותר קריטי במידה ואנחנו משתמשים במודולים נידחים.

חשוב לבדוק כל חבילה במיוחד אם אנו משתמשים בקוד פתוח. גם npq וגם snyk נבנו כך שקל להשתמש בהם גם בתהליך פיתוח וגם בתהליך בילד. במקרה של npq זה מוצר חינמי עם יכולות חשובות שמשלימות את 'npm audit' (שלא כתבתי עליו עדיין אבל אכתוב). במקרה של snyk – עבור המפתח הבודד זה חינם וכדאי להתנסות. אפשר וכדאי לעטוף את ה-npm עם npq עוד היום.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
node.js אבטחת מידע

5 תגובות

  1. יאיר הגב אוגוסט 5, 2018 בשעה 2:27 pm

    מה הבעיה עם jquey ?

    • מושיקו הגב אוגוסט 5, 2018 בשעה 6:07 pm

      יש את אותה הבעיה שיש בanglar

  2. דוד הגב אוגוסט 7, 2018 בשעה 11:47 am

    מי משתמש היום ב-npm? כולם עברו ל-yarn.

  3. מישהו הגב אוקטובר 29, 2018 בשעה 1:26 pm

    ל Snyk יש מודל רישוי חינמי, רק להעיר.

  4. גילי הגב דצמבר 7, 2018 בשעה 1:28 pm

    היי, לא יודעת אם לא קיים או לא מצאתי, מאמר על npm audit? אם באמת לא קיים, אשמח אם תכתב אחד עליו וחבריו.

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד