Node.js-køremiljøet bliver mere og mere populært blandt teams, der har brug for at bygge dynamiske webapplikationer på serversiden. Node.js, der i øjeblikket vedligeholdes af OpenJS Foundation, har næsten 2.500 bidragydere og er det hurtigst voksende open source-projekt med mere end 1 milliard downloads til dato.
Siden udgivelsen i 2009 bruger mange store organisationer nu Node.js til at bygge virksomhedsapplikationer og forbedre applikationernes ydeevne. En af dem er PayPal, som reducerede svartiderne for deres side med ca. 35 %, da de implementerede Node.js. Andre brugere af Node.js omfatter IBM, NASA, Uber, Netflix og endda Microsoft.
Selv om det er ved at blive det foretrukne udviklingssprog til webservere, skal brugerne være opmærksomme på, at der er Node.js licens- og sikkerhedshensyn.
Hvad er Node.js-licensering?
Node.js bruger en permissiv MIT-licens til hovedbiblioteket. MIT-licensen gælder for alle dele af Node.js-modulet, der ikke vedligeholdes eksternt.
Der er yderligere licenser, der gælder for de resterende biblioteker fra tredjeparter, herunder Zero Clause BSD-licensen og ISC-licensen, hvor den komplette licensfil er tilgængelig her.
Disse licenser tillader enhver at bruge, ændre og videredistribuere softwaren til enhver tid, idet der kun kræves tilskrivning, mens bidragyderne holdes skadesløse. Sammenlignet med GNU GPL kræver MIT-licensen ikke, at udviklerne skal gøre deres egen kildekode tilgængelig, når de videredistribuerer deres software.
Hvad er Node.js licens- og sikkerhedsrisici?
Node.js bruger en pakkehåndtering (npm), som har mere end 1.000.000 pakker til rådighed. Udviklerfællesskabet for Node.js er et af de mest produktive, og i 2019 var npm-platformen vokset med 250 %. En af udfordringerne for udviklere med Node.js-sikkerhed er at sikre, at enhver pakke og alle tilknyttede afhængigheder, der bruges i produktionen, modtager regelmæssige opdateringer og patches.
Udviklere er nødt til at revidere alle pakkeafhængigheder hyppigt for at finde nyopdagede sårbarheder. Når de opbygger nye funktioner, skal udviklerne sikre, at de bruger sikre pakker og patcher alle kendte sårbarheder, inden de frigiver deres kode.
Hvor meget af Node.js-licensen er open source?
Virksomheder elsker Node.js-licensmodellen, da den giver dem mulighed for at forkse kodebasen, bygge deres egne server-side snippets og kun opdatere deres linkede pakker, når det er nødvendigt. Permissive licenser giver holdene mulighed for at gøre deres kodebase proprietær i fremtiden, i modsætning til copyleft-princippet i GNU GPL.
Med hensyn til licenser skal udviklerne vide, hvilke softwarelicenser deres pakker anvender, fordi der er masser af GPL-pakker tilgængelige på npm. I nogle tilfælde vil udviklere levere den samme pakke under en kommerciel licens, hvilket vil forhindre, at gensidighedsklausulen i GPLv3 udløses.
Hvad er fordelene ved Node.js licensmodellen?
Debatterne om tilladelsesgivende versus copyleft-licenser vil fortsætte, men Node.js synes at bevise, at kommercielle interesser ikke behøver at hindre samarbejde. For hold, der arbejder i højt klassificerede miljøer (som NASA), har Node.js og npm-økosystemet vist sig at være en værdifuld ressource. Med en model, der gør det muligt for de enkelte teams at beslutte, om al deres kildekode skal være tilgængelig eller ej, giver Node.js brugerne den størst mulige frihed.
Der er også følgende udviklingsfordele ved Node.js:
- Byder server-side JavaScript-programmeringsløsning
- Er fortsat meget skalerbar i både horisontal og vertikal retning
- Giver udviklere et enkelt programmeringssprog til front- og backend-applikationer
- Øger applikationens ydeevne med ikke-blokkerende I/O-operationer
- Support fra branchens ledere med repræsentanter på Node.js Foundation
Kan man bruge Node.js-licenserede pakker i kommerciel software?
Når et team downloader og ændrer Node.js, har de frihed til at ophavsretligt beskytte deres version af softwaren til enhver tid og anvende en mere restriktiv licens på deres eget arbejde.
De fleste Node.js-projekter forbliver open source, og virksomheder bruger det til frameworks, biblioteker og værktøjer. For alle hold, der bruger npm-sourcede pakker, må der ikke være nogen gensidige licenser indeholdt i nogen af modulerne (medmindre det er tilsigtet). Alle linkede pakker og moduler skal være omfattet af MIT-licensen eller en af de BSD-lignende licenser, herunder ISC-licensen.
Hvordan bruger man en Node.js-licens?
Alle komponenter, der er bygget på Node.js-biblioteket, kan bruge en hvilken som helst af de tilgængelige softwarelicenser ved distribution. Bidragydere foretrækker at bruge permissive licenser, da det giver efterfølgende brugere frihed til at træffe deres egne beslutninger om deres software i fremtiden. Når teamet begynder at stole på andre pakker, skal de sikre, at deres arbejde overholder alle andre begrænsninger, der er impliceret i disse moduler.
I npm er der en specifik kommando til at tilføje licenstekst til alle projektfiler. Udviklere kan angive licensnavnet og forfatterens navn, og der findes en komplet liste over kompatible licenser her.
Hvordan håndterer Node.js sikkerhedsrisici i pakker?
Når en udvikler eller et sikkerhedsteam opdager en ny sårbarhed, vil Node.js frigive en version med en sikkerhedsopdatering. I nogle tilfælde vil det være nødvendigt med en manuel patch. Udviklere skal ofte gennemgå deres pakkesårbarheder ved hjælp af audit-kommandoen, som vil give en anbefalet rettelse til sikkerhedsbristen.
Underhold dine afhængigheder i kodebasen med Snyk
Alle projekter, der kører i produktion, bør være genstand for regelmæssig revision af sårbarheder og licenser for alle afhængigheder.
Snyk hjælper teams med at scanne alle afhængigheder og sikre, at de kan administrere licensoverholdelse i hele projektet. For Node.js-udviklingshold kan det at have et klart overblik over alle pakker og sikre overholdelse af licenser i alle faser af projektet være med til at forhindre, at der sniger sig større problemer ind i kodebasen.
For at se, hvordan Snyk kan hjælpe dit team med at administrere licensoverholdelse – planlæg en demo i dag.