In this article
Lizenzierung und Sicherheitsaspekte von Node.js
Die Node.js-Laufzeitumgebung wird bei Teams immer beliebter, die dynamische serverseitige Webanwendungen entwickeln müssen. Node.js wird derzeit von der OpenJS Foundation betreut, hat fast 2.500 Mitwirkende und ist das am schnellsten wachsende Open-Source-Projekt – mit bisher mehr als einer Milliarde Downloads.
Seit der Veröffentlichung im Jahr 2009 nutzen viele große Unternehmen Node.js, um Enterprise-Anwendungen zu entwickeln und die Anwendungsleistung zu verbessern. Dazu gehört PayPal, das die Antwortzeiten seiner Seite nach der Einführung von Node.js um etwa 35 % verkürzte. Weitere Nutzer von Node.js sind IBM, NASA, Uber, Netflix und sogar Microsoft.
Obwohl Node.js sich zur bevorzugten Sprache für die Webserver-Entwicklung entwickelt, sollten Nutzer die Lizenzierungs- und Sicherheitsaspekte von Node.js kennen.
Was ist die Node.js-Lizenzierung?
Für die Hauptbibliothek verwendet Node.js eine freizügige MIT-Lizenz. Die MIT-Lizenz gilt für alle Teile des Node.js-Moduls, die nicht extern gepflegt werden.
Für die übrigen Drittanbieter-Bibliotheken gelten weitere Lizenzen, darunter die Zero-Clause-BSD-Lizenz und die ISC-Lizenz. Die vollständige Lizenzdatei finden Sie hier.
Diese Lizenzen erlauben es allen, die Software jederzeit zu verwenden, zu ändern und weiterzuverbreiten. Dabei ist lediglich eine Namensnennung erforderlich; zugleich werden die Mitwirkenden von der Haftung freigestellt. Anders als bei der GNU GPL verpflichtet die MIT-Lizenz Entwickler nicht dazu, bei der Weiterverbreitung ihrer Software den eigenen Quellcode offenzulegen.
Welche Lizenzierungs- und Sicherheitsrisiken gibt es bei Node.js?
Node.js verwendet den Paketmanager npm, der mehr als 1.000.000 Pakete umfasst. Die Entwickler-Community von Node.js gehört zu den produktivsten. Bis 2019 war die npm-Plattform um 250 % gewachsen. Eine Herausforderung für Entwickler im Bereich Node.js-Sicherheit besteht darin, alle Pakete und ihre Abhängigkeiten in Produktionsumgebungen regelmäßig zu aktualisieren und mit Patches zu versehen.
Entwickler müssen alle Paketabhängigkeiten regelmäßig überprüfen, um neu entdeckte Sicherheitslücken aufzuspüren. Bei der Entwicklung neuer Funktionen müssen sie darauf achten, sichere Pakete zu verwenden und bekannte Sicherheitslücken zu schließen, bevor sie ihren Code veröffentlichen.
Wie viel von Node.js ist Open Source?
Unternehmen schätzen das Node.js-Lizenzmodell, da sie damit die Codebasis abzweigen, eigene serverseitige Codebausteine entwickeln und verknüpfte Pakete nur bei Bedarf aktualisieren können. Freizügige Lizenzen geben Teams die Möglichkeit, ihre Codebasis künftig proprietär zu machen – anders als beim Copyleft-Prinzip der GNU GPL.
Was die Lizenzierung betrifft, müssen Entwickler wissen, welche Softwarelizenzen für ihre Pakete gelten, denn auf npm gibt es zahlreiche GPL-lizenzierte Pakete. In manchen Fällen bieten Entwickler dasselbe Paket auch unter einer kommerziellen Lizenz an. Dadurch lässt sich die Gegenseitigkeitsklausel der GPLv3 umgehen.
Welche Vorteile bietet das Node.js-Lizenzmodell?
Die Debatte über freizügige Lizenzen und Copyleft-Lizenzen wird weitergehen. Node.js scheint jedoch zu zeigen, dass wirtschaftliche Interessen die Zusammenarbeit nicht behindern müssen. Für Teams, die in streng geheimen Umgebungen arbeiten – etwa bei der NASA –, haben sich Node.js und das npm-Ökosystem als wertvolle Ressourcen erwiesen. Da einzelne Teams selbst entscheiden können, ob sie ihren gesamten Quellcode offenlegen, bietet Node.js den Nutzern größtmögliche Freiheit.
Zu den Entwicklungsvorteilen von Node.js gehören außerdem:
Eine serverseitige JavaScript-Programmierlösung
Hohe Skalierbarkeit in horizontaler und vertikaler Richtung
Eine einheitliche Programmiersprache für Frontend- und Backend-Anwendungen
Höhere Anwendungsleistung durch nicht blockierende E/A-Operationen
Unterstützung durch Branchenführer mit Vertretern in der Node.js Foundation
Können Sie Node.js-Pakete mit Lizenz in kommerzieller Software verwenden?
Sobald ein Team Node.js herunterlädt und verändert, kann es seine Softwareversion jederzeit urheberrechtlich schützen und die eigenen Arbeitsergebnisse mit einer restriktiveren Lizenz versehen.
Die meisten Node.js-Projekte bleiben Open Source; Unternehmen verwenden Node.js für Frameworks, Bibliotheken und Tools. Für Teams, die Pakete aus npm nutzen, dürfen die Module keine reziproken Lizenzen enthalten – sofern dies nicht beabsichtigt ist. Jedes verknüpfte Paket und Modul sollte der MIT-Lizenz oder einer der BSD-artigen Lizenzen unterliegen, einschließlich der ISC-Lizenz.
Wie verwenden Sie eine Node.js-Lizenz?
Jede auf der Node.js-Bibliothek basierende Komponente kann bei der Weitergabe unter jeder verfügbaren Softwarelizenz stehen. Mitwirkende bevorzugen freizügige Lizenzen, da sie späteren Nutzern die Freiheit lassen, künftig selbst über ihre Software zu entscheiden. Sobald ein Team auf andere Pakete zurückgreift, muss es sicherstellen, dass seine Arbeit auch den darin festgelegten Einschränkungen entspricht.
In npm gibt es einen speziellen Befehl, mit dem Sie Lizenztexte zu allen Projektdateien hinzufügen können. Entwickler können den Lizenznamen und den Namen des Autors angeben. Eine vollständige Liste kompatibler Lizenzen finden Sie hier.
Wie begegnet Node.js Sicherheitsrisiken in Paketen?
Wenn Entwickler oder Sicherheitsteams eine neue Sicherheitslücke entdecken, veröffentlicht Node.js eine Version mit einem Sicherheitsupdate. In manchen Fällen ist ein manueller Patch erforderlich. Entwickler sollten die Sicherheitslücken in ihren Paketen regelmäßig mit dem Audit-Befehl überprüfen. Dieser empfiehlt eine Korrektur für die Sicherheitslücke.
Verwalten Sie Ihre Codebasis-Abhängigkeiten mit Snyk
Jedes Projekt, das in einer Produktionsumgebung läuft, sollte regelmäßig auf Sicherheitslücken und Lizenzen in allen Abhängigkeiten geprüft werden.
Snyk unterstützt Teams dabei, alle Abhängigkeiten zu scannen und die Lizenz-Compliance im gesamten Projekt sicherzustellen. Für Node.js-Entwicklungsteams kann ein klarer Überblick über alle Pakete und die Einhaltung der Lizenzen in jeder Projektphase dazu beitragen, größere Probleme in der Codebasis zu verhindern.
Starten Sie mit Capture-the-Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.