Node.js-licenties en veiligheidsoverwegingen

, Author

De Node.js runtime-omgeving wordt steeds populairder bij teams die dynamische, server-side webtoepassingen moeten bouwen. Node.js, dat momenteel wordt onderhouden door de OpenJS Foundation, heeft bijna 2500 bijdragers en is het snelst groeiende open-sourceproject, met tot nu toe meer dan 1 miljard downloads.

Sinds de release in 2009 gebruiken veel grote organisaties Node.js nu om bedrijfsapplicaties te bouwen en de prestaties van applicaties te verbeteren. Een van hen is PayPal, die de responstijden voor hun pagina met ongeveer 35% verminderde toen ze Node.js inzetten. Andere gebruikers van Node.js zijn IBM, NASA, Uber, Netflix, en zelfs Microsoft.

Hoewel het de voorkeurtaal voor webserver-ontwikkeling aan het worden is, moeten gebruikers zich ervan bewust zijn dat er Node.js licentie- en beveiligingsoverwegingen zijn.

Extra licenties die van toepassing zijn op de overige bibliotheken van derden zijn de Zero Clause BSD-licentie en de ISC-licentie met het volledige licentiebestand dat hier beschikbaar is.

Deze licenties staan iedereen toe om de software te gebruiken, te wijzigen en te herdistribueren op elk gewenst moment, met alleen de vereiste naamsvermelding terwijl de bijdragers worden gevrijwaard. Vergeleken met de GNU GPL, vereist de MIT licentie niet dat ontwikkelaars hun eigen broncode beschikbaar stellen bij het herverspreiden van hun software.

Wat zijn de Node.js licentie- en veiligheidsrisico’s?

Node.js gebruikt een package manager (npm) die meer dan 1.000.000 packages beschikbaar heeft. De ontwikkelaarsgemeenschap voor Node.js is een van de meest productieve en in 2019 was het npm-platform met 250% gegroeid. Een van de uitdagingen voor ontwikkelaars met Node.js-beveiliging is ervoor te zorgen dat elk pakket en alle gekoppelde afhankelijkheden die in productie worden gebruikt, regelmatig updates en patches krijgen.

Node.js maakt gebruik van een pakketbeheerder (npm) die jaar na jaar meer kwetsbaarheden bevat

Ontwikkelaars moeten alle pakketafhankelijkheden regelmatig controleren om nieuw ontdekte kwetsbaarheden te vinden. Wanneer ontwikkelaars nieuwe functies bouwen, moeten ze ervoor zorgen dat ze veilige pakketten gebruiken en alle bekende kwetsbaarheden patchen voordat ze hun code vrijgeven.

Hoeveel van de Node.js-licenties zijn open source?

Ondernemingen zijn dol op het Node.js-licentiemodel omdat ze hiermee de codebase kunnen forken, hun eigen server-side snippets kunnen bouwen en hun gekoppelde pakketten alleen hoeven bij te werken wanneer dat nodig is. Permissieve licenties geven teams de optie om hun codebase in de toekomst eigen te maken, in tegenstelling tot het copyleft-principe van de GNU GPL.

In termen van licenties moeten ontwikkelaars weten welke softwarelicenties hun pakketten gebruiken, omdat er veel GPL-plichtige pakketten beschikbaar zijn op npm. In sommige gevallen zullen ontwikkelaars hetzelfde pakket onder een commerciële licentie aanbieden, waardoor de wederkerigheidsclausule in de GPLv3 niet in werking treedt.

Wat zijn de voordelen van het Node.js-licentiemodel?

De debatten over permissive versus copyleft licenties zullen doorgaan, maar Node.js lijkt te bewijzen dat commerciële belangen de samenwerking niet in de weg hoeven te staan. Voor teams die in zeer geheime omgevingen werken (zoals NASA), heeft Node.js en het npm ecosysteem bewezen een waardevolle hulpbron te zijn. Met een model dat individuele teams laat beslissen of al hun broncode beschikbaar moet zijn of niet, geeft Node.js de maximale vrijheid aan gebruikers.

De ontwikkelingsvoordelen van Node.js omvatten ook:

  • Biedt server-side JavaScript programmeeroplossing
  • Blijft zeer schaalbaar in zowel horizontale als verticale richtingen
  • Geeft ontwikkelaars een enkele programmeertaal voor front- en back-end applicaties
  • Verhoogt de prestaties van applicaties met non-blocking I/O operaties
  • Support van industrieleiders met vertegenwoordigers in de Node.js Foundation

Kunt u pakketten met een Node.js-licentie gebruiken in commerciële software?

Als een team Node.js eenmaal heeft gedownload en aangepast, hebben ze de vrijheid om op elk gewenst moment een copyright op hun versie van de software te leggen en een restrictievere licentie op hun eigen werk toe te passen.

De meeste Node.js-projecten blijven open source en bedrijven gebruiken het voor frameworks, bibliotheken en tools. Voor alle teams die pakketten gebruiken die van npm afkomstig zijn, geldt dat er geen wederzijdse licenties mogen zijn opgenomen in de modules (tenzij dit de bedoeling is). Elk gekoppeld pakket en module moet vallen onder de MIT-licentie of een van de BSD-achtige licenties, met inbegrip van de ISC-licentie.

Hoe gebruik je een Node.js-licentie?

Elk onderdeel dat op de Node.js-bibliotheek is gebouwd, kan bij distributie een van de beschikbare softwarelicenties gebruiken. Bijdragers geven de voorkeur aan het gebruik van permissieve licenties, omdat dit latere gebruikers de vrijheid geeft om in de toekomst hun eigen beslissingen te nemen over hun software. Zodra het team op andere pakketten gaat vertrouwen, moeten ze ervoor zorgen dat hun werk voldoet aan alle andere beperkingen die in die modules zijn opgenomen.

In npm is er een specifieke opdracht om licentietekst aan alle projectbestanden toe te voegen. Ontwikkelaars kunnen de licentienaam en de naam van de auteur opgeven, met een volledige lijst van compatibele licenties die hier beschikbaar is.

Hoe gaat Node.js om met beveiligingsrisico’s in pakketten?

Wanneer een ontwikkelaar of beveiligingsteam een nieuwe kwetsbaarheid ontdekt, zal Node.js een versie uitbrengen met een beveiligingsupdate. In sommige gevallen zal een handmatige patch nodig zijn. Ontwikkelaars moeten de kwetsbaarheden in hun pakketten regelmatig controleren met behulp van het audit-commando, dat een aanbevolen reparatie voor de beveiligingsfout zal bieden.

Onderhoud de afhankelijkheden van uw codebase met Snyk

Elk project dat in productie wordt uitgevoerd, moet regelmatig worden onderworpen aan een controle op kwetsbaarheden en licenties voor alle afhankelijkheden.

Snyk helpt teams om alle afhankelijkheden te scannen en ervoor te zorgen dat ze licentiecompliance door het hele project kunnen beheren. Voor Node.js-ontwikkelteams kan het hebben van een duidelijk overzicht van alle pakketten en het waarborgen van de naleving van licenties tijdens elke fase van het project helpen voorkomen dat er grote problemen in de codebase sluipen.

Om te zien hoe Snyk uw team kan helpen bij het beheren van licentie compliance – plan vandaag nog een demo.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.