Die Gefahren der Abhängigkeit von Drittanbieter-Codes

Es gibt ein paar wirklich gute Dinge über die Funktionsweise von Software im Internet. Zum einen gibt es ein riesiges inoffizielles Netzwerk von Millionen von Menschen, die zu einer großen Sammlung von Codefragmenten beitragen, die dazu beitragen, noch mehr Millionen von Anwendungen zu betreiben.

Jedes Mal, wenn Sie unten auf einer Webseite einen kleinen Link mit der Aufschrift „Powered by So-And-So“ sehen, erleben Sie diesen kollaborativen Effekt in Aktion.

Und natürlich ist der Hauptgrund, warum Leute diese Freigabe und Zusammenarbeit von Drittanbietern mögen, dass Sie dadurch viele Stunden Entwicklungszeit sparen können, weil Sie etwas, das bereits existiert, nicht neu erfinden. Aber selbst mit diesen großartigen Vorteilen des Code-Sharing-Systems von Drittanbietern gibt es viele Gründe, warum Sie die Verwendung dieser Codefragmente vermeiden möchten, wie wir gleich sehen werden ...

1.Potenzielle Sicherheitsrisiken

Da nahezu der gesamte Code, der alles im Web steuert, Open Source ist, ist es eine faire Wette, dass böswillige Nutzlasten in einer bestimmten Anwendung von der Entwicklergemeinschaft schnell entdeckt und schnell korrigiert werden.

Viele dieser Codefragmente werden jedoch täglich hunderte oder sogar tausende Male heruntergeladen, und nicht jedes Verwaltungsteam leistet gute Arbeit bei der Aufrechterhaltung eines sicheren Systems zur gemeinsamen Nutzung von Code.

Je größer und komplexer eine Anwendung ist, desto einfacher ist es, sie zu infizieren, indem ein paar Codezeilen an einer undeutlichen Stelle hinzugefügt werden. Nahezu niemand nimmt sich die Zeit, um jede Codezeile in einer Anwendung zu überprüfen, da sie im Allgemeinen davon ausgehen, dass der Code vertrauenswürdig ist.

Ein hochqualifizierter Programmierer kann normalerweise die bösartige Natur des Codes gut verschleiern, und nur ein anderer hochqualifizierter Programmierer wird herausfinden, wozu er dient ... wenn das bösartige Codefragment erkannt wird.

2. Sie besitzen es nicht

Dies ist eigentlich eine Kombination von Problemen. Die erste ist, dass Sie verschiedenen Lizenzbedingungen unterliegen können. Wenn mehrere Codefragmente in einer einzelnen Webseite oder Anwendung verwendet werden, unterliegen Sie möglicherweise mehreren verschiedenen Lizenzbedingungen und einige davon stehen möglicherweise in Konflikt miteinander.

Natürlich stört sich kaum jemand, um diese langweiligen Listen von Bedingungen und Konditionen zu lesen, aber das kann möglicherweise ein Fehler sein. Insbesondere wäre es ein Fehler, wenn Sie aufgrund einer Bedingung in der Lizenzvereinbarung gegen geltendes Recht in Ihrem Heimatland oder in dem Land verstoßen, in dem sich Ihr Server befindet.

Das andere Problem ist, dass Sie, wenn Sie keinen Code besitzen, keine Kontrolle über den Code haben und möglicherweise nicht alles verstehen, was er tut oder wie er funktioniert. Das heißt, wenn jemand den Code ändert, bleiben Sie bei dieser Änderung, insbesondere wenn Sie Updates, Patches, Upgrades und neue Versionen treu installieren, sobald sie als stabil veröffentlicht werden, oder wenn Sie vollständig auf die Bereitstellung von Inhalten angewiesen sind Netzwerke für Ihre Drittanbieterlösungen.

3. Sie bekommen oft viel mehr als Sie brauchen

Drittanbieter-Code funktioniert normalerweise für die gewünschte Arbeit, aber manchmal enthält er alle Arten von Zusatzfunktionen, die Sie nicht benötigen und wahrscheinlich nie verwenden werden. In einigen Fällen können Sie diese zusätzlichen Funktionen nicht leicht oder überhaupt nicht entfernen. Möglicherweise müssen Sie auch Kompromisse eingehen. Das Feature kann etwas sehr nah an dem sein, was Sie beabsichtigen, aber nicht genau das, was Sie beabsichtigen. Sie handeln großartig, um weniger Arbeit zu haben, und das ist nicht immer ein guter Handel.

4. Mehrere Ebenen der Abhängigkeit von Dritten können zu echten Problemen führen

Viele Open Source-Projekte verwenden die gleichen Codefragmente von Drittanbietern auf unterschiedliche Weise, um ihre Software zu erstellen. Meistens ist das keine schlechte Sache, kann aber zu Problemen führen. Heutzutage installieren viele Entwickler die von ihnen verwendeten Fragmente nicht einmal, sondern ziehen sie zur Laufzeit aus Content-Delivery-Netzwerken heraus, wenn dies erforderlich ist. Die Gefahr wurde durch den Left-Pad-Vorfall von 2016 auf spektakuläre Weise veranschaulicht.

Jede Kette ist nur so stark wie ihr schwächstes Glied. Diese Verkettung von Abhängigkeiten bedeutet, dass, wenn ein Glied in der gesamten Kette unterbrochen oder beschädigt wird, die gesamte Kette in Gefahr ist. In manchen Situationen kann dies ziemlich kostspielig sein. Niemand hätte die Macht in den 11-Codezeilen vermutet, die in dieser harmlosen kleinen Funktion namens Left-Pad enthalten sind, aber als dieses Kettenglied ausfiel, brachten es viele große Websites zum Stehen. Der Großteil davon war, dass die meisten Leute, die Left-Pad verwendeten, keine Ahnung hatten, dass sie es benutzten, was es tat oder wie das Problem zu beheben war. Wie unter Punkt 2 erwähnt, können Sie es nicht unbedingt verstehen, wenn Sie es nicht besitzen.

Left-Pad war eine sehr einfache Funktion, die nur ein paar Leerzeichen an der linken Seite einer Zeile hinzufügt, um sicherzustellen, dass die Zeile die richtige Länge hat. Das Problem hier ist, dass jeder kompetente Programmierer diese Funktionalität leicht replizieren kann. Es ist absolut nicht notwendig, dass eine Anwendung von dieser Funktion von Drittanbietern abhängig ist, und Tausende von Websites verwendeten Software, einschließlich Netflix, Facebook und Reddit. Es war nur ein Glücksfall, dass es in diesem Fall eine sehr einfache Funktion war, die die Kette durchbrach, und nicht irgendeine wirklich komplizierte Funktion, die ihre eigene Abhängigkeitskette hatte.

Die Quintessenz ist, wenn Sie es selbst bauen können, sollten Sie es wahrscheinlich tun!

Letztendlich führt die Entscheidung, ob Codeblöcke von Drittanbietern in Ihrem Projekt verwendet werden, zu einer Reihe komplizierter Entscheidungen, die niemals leichtfertig getroffen werden sollten. Die Faktoren, die Sie berücksichtigen müssen, sind Sicherheit, Rechtmäßigkeit, Kosten, Zeit und Stabilität.

Um den Entscheidungsprozess zu vereinfachen, wird wahrscheinlich die folgende Testbedingung hilfreich sein.

WENN irgendeiner dieser Faktoren zutrifft:

  • Die gewünschte Funktion ist einfach
  • Sie (oder Ihr Team) können die Funktion erstellen
  • Es gibt viel Zeit, um die Funktion zu erstellen
  • Ihre Anwendung benötigt eine gute Sicherheit
  • Sie haben Bedenken hinsichtlich möglicher rechtlicher Probleme im Zusammenhang mit der Lizenzierung durch Dritte
  • Es ist wichtig, dass Ihre Anwendung niemals versagt

DANN solltest du es selbst bauen

Andernfalls ist es möglicherweise effizienter, die Funktionen von Drittanbietern zu verwenden, vorausgesetzt, Sie kennen die potenziellen Probleme und haben eine Strategie für das, was Sie tun sollen, wenn diese Probleme auftreten.

Headerbild mit freundlicher Genehmigung von Stephanie Tucker

Bogdan Rancea

Bogdan ist Gründungsmitglied von Inspired Mag und hat in diesem Zeitraum fast 6-Jahre Erfahrung gesammelt. In seiner Freizeit studiert er gern klassische Musik und erforscht die bildende Kunst. Er ist auch ziemlich besessen von Fixies. Er besitzt bereits 5.