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 am unteren Rand einer Webseite einen kleinen Link mit der Aufschrift "Powered by So-And-So" sehen, erleben Sie diesen kollaborativen Effekt in Aktion.

Natürlich ist der Hauptgrund, weshalb Leute wie dieser Dritte mit anderen zusammenarbeiten und zusammenarbeiten, der Grund, dass Sie so viele Stunden Entwicklungszeit sparen können, weil Sie etwas, das bereits existiert, nicht neu erfinden. Aber auch mit diesen großen 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 ...

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 in der Regel die bösartige Natur des Codes gut verdecken, und nur ein anderer hochqualifizierter Programmierer kann herausfinden, wozu er bestimmt ist… wenn das bösartige Code-Fragment entdeckt 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.