تتزايد كمية حزم جافا سكريبت كل يوم. إنه نتيجة لنشاط المجتمع الذي يتطلب، من ناحية، حلولاً جديدة، ومن ناحية أخرى - يولدها كشكل من أشكال التطوير الذاتي أو الإنجاز. هذا النمو الكبير يفتح أبوابًا وإمكانيات جديدة، لكنه يجلب معه أيضًا خطرًا يجب أن يكون كل مطور على دراية به.
في أواخر نوفمبر/تشرين الثاني 2018، أبلغ مجتمع GitHub عن وجود ثغرة خطيرة في دفق الحدث - حزمة تساعد في العمل مع العقدة الأحداث بكفاءة أكبر. كان شائعًا إلى حد ما، حيث وصل عدد التنزيلات في تلك الفترة المحددة إلى أكثر من 2.2 مليون في الأسبوع (مقارنةً بـ React مع 3,7 مليون). كان Event-stream، بالإضافة إلى تبعياته، يعتمد على مكتبة أخرى - الخريطة المسطحة-البخار المسطح, التي تصادف أن تم تحديثها ببرمجية خبيثة للتشفير. وقد سمحت بسرقة المفاتيح الخاصة وغيرها من التفاصيل من حسابات المستخدمين على الأجهزة التي كانت الحزمة مجمّعة فيها.
في نهاية المطاف، تمت إزالة flatmap-stream من NPM، مما خلق مشاكل زمنية مع العديد من المكتبات الأخرى. في مايو من نفس العام، وجد المجتمع بابًا خلفيًا داخل ملف تعريف الارتباط والتي كانت جزءًا من العديد من التبعيات الأخرى أيضًا. يمكن تعدد هذه الأمثلة، مما يوضح أنه من المهم الانتباه إلى التبعيات المثبتة في المشروعليس فقط من جافا سكريبت المنظور، ولكن أيضًا في سياق عام.
الاعتماد على الحلول الرسمية والمجتمعات الكبيرة
من المهم قدر الإمكان الاعتماد على الحلول الرسمية في مشروعك. فهي ليست فقط أقل عرضة للخطر بسبب عملية تطوير أفضل. فالمجتمع الكبير، الذي عادةً ما يأتي مع علامة تجارية أفضل، يساعد على تحديد المشاكل بشكل أسرع بكثير، والأهم من ذلك - إيجاد حلول جيدة.
استخدام اتجاهات الآلية الوقائية الوقائية الوطنية
الشكل 1 اتجاه Webpack NPM.
الشكل 2. اتجاه الآلية الوقائية الوقائية الصفرية لتيار الأحداث.
في بعض الأحيان، قد لا تمثل معرفة الحالة الحالية للحزمة ماضيها. نظرة سريعة على الرسم البياني لاتجاهات npm يمكن أن تظهر لك اتجاهات الحزمة الفعلية. لن يُظهر فقط القمم الكبيرة، حيث يمكن العثور على بعض الثغرات، بل سيُظهر الحالة العامة لحزمة معينة (ملاحظة: تمثل القمم الكبيرة في اتجاهات جوجل بالقرب من 24 - 30 ديسمبر موسم العطلات، والتي قد لا تمثل بالضرورة مشكلة). كمثال على ذلك، ألقِ نظرة على الشكل 1 - وهو يمثل اتجاه تنزيل Webpack أسبوعيًا. سترى نموًا مستقرًا دون أي نقاط توقف، مما قد يشير إلى أن Webpack حزمة مستقرة وآمنة للاستخدام. من ناحية أخرى، في الشكل 2 ستجد في الشكل 2 انخفاضًا كبيرًا في شهر نوفمبر، وهي إشارة واضحة إلى أن شيئًا خاطئًا قد يكون حدث في تلك الفترة (وهو ما نعرفه بالفعل).
تدقيق التبعية
الطريقة الأفضل والأكثر موثوقية للتحقق من حالة التبعيات الخاصة بك هي إجراء التدقيق. يتوفر هذا الأمر الآن بشكل أصلي لكل من yarn و npm، على الرغم من أنه يتطلب أحدث إصداراتهما. يرسل قائمة بالتبعيات الحالية إلى نقطة نهاية مناسبة ويعيد معلومات تحتوي على نقاط ضعفها الحالية وتفاصيل أخرى عن الاستخدام، بما في ذلك الإشارة إلى الوثائق. (الشكل 3).
الشكل 3. مثال على نتيجة أمر تدقيق npm. المصدر: https://docs.npmjs.com
إدارة التبعيات في جافا سكريبت ليست مهمة سهلة. يتزايد عدد الحلول كل يوم، لذلك تذكر أن تختار تبعياتك بحكمة وعناية. استمر في مراجعة مشروعك الحالي وتحديث حزمك بانتظام.
لمعرفة المزيد عن تبعيات جافا سكريبت وكيفية حل بعض مشاكلها, يرجى مراجعة هذه المقالة.
المصدر:
- https://github.com/dominictarr/event-stream/issues/116
- https://blog.npmjs.org/post/180565383195/details-about-the-event-stream-incident
- https://blog.npmjs.org/post/173526807575/reported-malicious-module-getcookies
- https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities
- https://docs.npmjs.com/cli/audit
- https://yarnpkg.com/lang/en/docs/cli/audit/