مخاطر تبعية كود الطرف الثالث

هناك بعض الأشياء الجيدة حقًا عن الطريقة التي يعمل بها البرنامج على الإنترنت. للبدء ، هناك شبكة ضخمة غير رسمية تضم ملايين الأشخاص الذين يساهمون في مستودع ضخم لأجزاء التعليمات البرمجية التي تساعد على تشغيل ملايين أخرى من التطبيقات.

في كل مرة ترى فيها رابطًا صغيرًا في أسفل صفحة ويب تقول "مدعوم من So-And-So" ، فإنك تشاهد هذا التأثير التعاوني في العمل.

وبالطبع فإن السبب الرئيسي وراء مشاركة الأشخاص وتعاونهم مع هذا الطرف الثالث هو أنه يمكن أن يوفر لك ساعات طويلة في وقت التطوير ، لأنك لا تعيد اختراع شيء موجود بالفعل. ولكن حتى مع هذه المزايا الكبيرة لنظام مشاركة الكود من جهة خارجية ، هناك العديد من الأسباب التي قد تجعلك ترغب في تجنب استخدام أجزاء الكود هذه ، حيث أننا على وشك أن نرى ...

1. مخاطر أمنية محتملة

نظرًا لأن جميع الكودات التي تحرك أي شيء على الويب هي عبارة عن مصدر مفتوح ، فهذا رهان جيد أنه في حالة وجود أي حمولة ضارة في تطبيق معين ، سيتم اكتشافه سريعًا بواسطة مجتمع المطورين وتصحيحه بسرعة.

ولكن يتم تنزيل العديد من أجزاء التعليمات البرمجية هذه مئات أو حتى آلاف المرات يوميًا ، وليس كل فريق إداري يقوم بعمل جيد في الحفاظ على نظام آمن لمشاركة الشفرة.

كلما كان التطبيق أكبر وأكثر تعقيدًا ، كان من الأسهل إصابته عن طريق إضافة بضعة أسطر من التعليمات البرمجية في مكان غامض. يكاد لا أحد يأخذ وقتًا في التدقيق في كل سطر من التعليمات البرمجية في تطبيق ما ، لأنهم يفترضون عمومًا أن الرمز يمكن الوثوق به.

يمكن للمبرمجين ذوي المهارات العالية عادة القيام بعمل جيد في التعتيم على الطبيعة الخبيثة للكود ، ولن يقوم سوى مبرمج آخر ماهرًا بمعرفة الغرض منه ... إذا تم اكتشاف جزء الكود الضار.

2. أنت لا تملكها

هذا هو في الواقع مزيج من المشاكل. الأول هو أنك قد تخضع لشروط الترخيص المختلفة. عندما يكون لديك أجزاء متعددة من الشفرات مستخدمة في صفحة ويب أو تطبيق واحد ، فقد تكون في الواقع خاضعًا لشروط وأحكام ترخيص متعددة مختلفة ، وقد تتعارض بعضها مع بعضها البعض.

بالطبع لا يكاد أي شخص يكره قراءة هذه القوائم المملة من الشروط والأحكام ، ولكن هذا يمكن أن يكون خطأ. على وجه الخصوص ، سيكون من الخطأ إذا تسببت بعض الشروط في اتفاقية الترخيص في انتهاك بعض القوانين في بلدك أو في البلد الذي يوجد به الخادم الخاص بك.

والمشكلة الأخرى هي أنه إذا لم يكن لديك رمز ، فلن يكون لديك أي سيطرة عليه ، وقد لا تفهم بالضرورة كل ما تفعله أو كيفية عمله. هذا يعني أنه في حالة قيام شخص ما بإجراء بعض التغييرات على التعليمات البرمجية ، فقد تتعثر مع هذا التغيير ، خاصةً إذا قمت بتثبيت التحديثات والتصحيحات والترقيات والإصدارات الجديدة بأمانة بمجرد إصدارها بشكل مستقر ، أو إذا كنت تعتمد تمامًا على تسليم المحتوى شبكات لحلول الطرف الثالث.

3. غالبا ما تحصل على أكثر بكثير مما تحتاج

عادةً ما تعمل شفرة الجهة الخارجية للقيام بالمهمة التي تريدها ، لكن في بعض الأحيان تحتوي على جميع أنواع الميزات الإضافية التي لا تحتاجها وربما لن تستخدمها أبدًا. في بعض الحالات ، لا يمكنك إزالة هذه الميزات الإضافية بسهولة أو حتى على الإطلاق. قد تضطر أيضا إلى حل وسط. قد تقوم الميزة بشيء قريب جدًا مما تنوي ، ولكن ليس بالضبط ما تنوي. أنت تتداول الذهول من أجل الحصول على عمل أقل ، وهذا ليس دائمًا تجارة جيدة.

4. يمكن أن تؤدي مستويات متعددة من تبعية الجهات الخارجية إلى مشكلة حقيقية

تستخدم العديد من مشاريع المصادر المفتوحة شظايا كود الطرف الثالث بطرق مختلفة لإنتاج برامجهم. معظم الوقت ليس شيئًا سيئًا ، لكنه قد يؤدي إلى مشكلة. في هذه الأيام ، لا يقوم الكثير من المطورين بتثبيت الأجزاء التي يستخدمونها ، لكنهم يسحبونها في وقت التشغيل من شبكات توصيل المحتوى عند الطلب. تم توضيح خطر هذا الأمر بشكل مذهل من خلال الحادث الأيسر 2016.

كل سلسلة قوية فقط مثل أضعف حلقاتها. هذه السلسلة من التبعيات تعني أنه إذا تم كسر أو اختراق أي رابط في أي مكان على طول السلسلة ، فإن السلسلة بأكملها تكون عرضة لخطر حدوث خلل. في بعض الحالات التي قد تكون مكلفة للغاية. لم يكن أحد يشك في أن القوة الموجودة في سطور 11 من التعليمات البرمجية الموجودة في تلك الوظيفة الصغيرة الحميدة تسمى Left-Pad ، ولكن عندما فشل رابط السلسلة المعين هذا ، أدى إلى توقف العديد من مواقع الويب الكبيرة. الجزء الرئيسي منه هو أن معظم الأشخاص الذين كانوا يستخدمون Left-Pad لم يكن لديهم أي فكرة عن أنهم يستخدمونها ، أو ما الذي فعلوه ، أو كيفية حل المشكلة. كما هو مذكور في البند 2 ، إذا لم تكن تمتلكها ، فقد لا تفهمها بالضرورة.

كانت Left-Pad وظيفة بسيطة جدًا تضيف فقط مسافات قليلة إلى الجانب الأيسر من الخط للتأكد من أن الخط هو الطول الصحيح. الآن المشكلة هنا هي أن أي مبرمج مختص يمكنه تكرار هذه الوظيفة بسهولة. ليست هناك حاجة على الإطلاق لأن يعتمد أي تطبيق على وظيفة الجهة الخارجية هذه ، ومع ذلك ، فإن الآلاف من مواقع الويب كانت تستخدم البرامج التي تضمنتها ، بما في ذلك Netflix و Facebook و Reddit. كان مجرد ضربة حظ أنه في هذه الحالة كانت وظيفة بسيطة للغاية كسرت السلسلة ، وليست وظيفة معقدة حقًا لها سلسلة من التبعيات الخاصة بها.

خلاصة القول هي أنه إذا كنت تستطيع أن تبنيها بنفسك ، فربما يجب عليك ذلك!

في نهاية المطاف ، يعود القرار بشأن استخدام كتل أكواد الطرف الثالث في مشروعك إلى سلسلة من القرارات المعقدة التي لا ينبغي أن تُتخذ على محمل الجد. العوامل التي تحتاج إلى أخذها في الاعتبار هي الأمن والشرعية والتكلفة والوقت والاستقرار.

لجعل عملية اتخاذ القرار أكثر بساطة ، من المحتمل أن تساعد حالة الاختبار التالية.

إذا كان أي من هذه العوامل صحيحًا:

  • الوظيفة التي تريدها بسيطة
  • لديك (أو فريقك) القدرة على إنشاء الوظيفة
  • هناك متسع من الوقت لإنشاء الوظيفة
  • يحتاج التطبيق الخاص بك إلى أمان جيد
  • لديك مخاوف بشأن المشاكل القانونية المحتملة المرتبطة بترخيص الطرف الثالث
  • من المهم ألا يفشل تطبيقك أبدًا

يجب أن تبنيها بنفسك ،

عدا ذلك ، قد يكون استخدام وظائف الطرف الثالث أكثر فعالية ، شريطة أن تكون على دراية بالمشاكل المحتملة وأن يكون لديك استراتيجية مطبقة لما ستفعله إذا نشأت هذه المشاكل.

رأس الصورة مجاملة من ستيفاني تاكر

بوجدان رانسيا

بوجدان هو أحد الأعضاء المؤسسين لشركة Inspired Mag ، حيث اكتسب خبرة تقرب من سنوات 6 خلال هذه الفترة. يحب في وقت فراغه دراسة الموسيقى الكلاسيكية واستكشاف الفنون البصرية. انه مهووس جدا مع إصلاحات كذلك. يمتلك 5 بالفعل.