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

משתמשים ב-node.js? כך תוודאו שאתם לא מתקינים מודול בעייתי
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

במאמר הקודם סיפרתי על 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 עוד היום.

פוסטים נוספים שכדאי לקרוא

בינה מלאכותית

להריץ ממשק של open-webui על הרספברי פיי

להפעיל ממשק של צ׳אט ג׳יפיטי שאפשר לגשת אליו מכל מחשב ברשת הביתית על רספברי פיי עם מודל בשם tinydolphin שרץ על רספברי פיי.

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