Node.js: licenze e considerazioni sulla sicurezza

, Author

L’ambiente runtime Node.js sta diventando sempre più popolare tra i team che hanno bisogno di costruire applicazioni web dinamiche lato server. Attualmente mantenuto dalla OpenJS Foundation, Node.js ha quasi 2.500 collaboratori ed è il progetto open-source in più rapida crescita, con più di 1 miliardo di download ad oggi.

Dal suo rilascio nel 2009, molte grandi organizzazioni ora usano Node.js per costruire applicazioni aziendali e migliorare le prestazioni delle applicazioni. Una di queste è PayPal, che ha ridotto i tempi di risposta per la sua pagina di circa il 35% quando ha implementato Node.js. Altri utenti di Node.js includono IBM, NASA, Uber, Netflix e persino Microsoft.

Anche se sta diventando il linguaggio di sviluppo webserver preferito, gli utenti dovrebbero essere consapevoli che ci sono considerazioni sulla licenza e la sicurezza di Node.js.

Le licenze aggiuntive che si applicano alle restanti librerie di terze parti includono la licenza BSD Zero Clause e la licenza ISC con il file di licenza completo disponibile qui.

Queste licenze permettono a chiunque di usare, modificare e ridistribuire il software in qualsiasi momento, con la sola attribuzione richiesta, indennizzando i collaboratori. Rispetto alla GNU GPL, la licenza MIT non richiede agli sviluppatori di rendere disponibile il proprio codice sorgente quando ridistribuiscono il loro software.

Quali sono i rischi di licenza e sicurezza di Node.js?

Node.js usa un gestore di pacchetti (npm) che ha più di 1.000.000 di pacchetti disponibili. La comunità di sviluppatori per Node.js è una delle più produttive e nel 2019 la piattaforma npm era cresciuta del 250%. Una delle sfide per gli sviluppatori con la sicurezza di Node.js è garantire che qualsiasi pacchetto e tutte le dipendenze collegate utilizzate in produzione ricevano regolarmente aggiornamenti e patch.

Node.js utilizza un gestore di pacchetti (npm) che ha un numero crescente di vulnerabilità anno dopo anno

Gli sviluppatori devono controllare frequentemente tutte le dipendenze dei pacchetti per trovare qualsiasi nuova vulnerabilità scoperta. Quando costruiscono nuove funzionalità, gli sviluppatori devono assicurarsi di utilizzare pacchetti sicuri e applicare patch a qualsiasi vulnerabilità nota prima di rilasciare il loro codice.

Quanto delle licenze di Node.js è open source?

Le aziende amano il modello di licenza di Node.js perché permette loro di fare un fork del codice, costruire i propri snippet lato server e aggiornare i pacchetti collegati solo quando necessario. Le licenze permissive danno ai team la possibilità di rendere la loro base di codice proprietaria in futuro, in contrasto con il principio del copyleft della GNU GPL.

In termini di licenze, gli sviluppatori devono sapere quali licenze software usano i loro pacchetti perché ci sono molti pacchetti GPL disponibili su npm. In alcuni casi, gli sviluppatori forniranno lo stesso pacchetto sotto una licenza commerciale, il che eviterebbe di far scattare la clausola di reciprocità nella GPLv3.

Quali sono i vantaggi del modello di licenza di Node.js?

I dibattiti sulle licenze permissive o copyleft continueranno, ma Node.js sembra dimostrare che gli interessi commerciali non devono impedire la collaborazione. Per i team che lavorano in ambienti altamente classificati (come la NASA), Node.js e l’ecosistema npm hanno dimostrato di essere una risorsa preziosa. Con un modello che permette ai singoli team di decidere se tutto il loro codice sorgente debba essere disponibile o meno, Node.js dà la massima libertà agli utenti.

I vantaggi di sviluppo di Node.js includono anche:

  • Offre una soluzione di programmazione JavaScript lato server
  • Rimane altamente scalabile sia in direzione orizzontale che verticale
  • Dà agli sviluppatori un singolo linguaggio di programmazione per applicazioni front-end e back-end
  • Aumenta le prestazioni delle applicazioni con operazioni I/O non bloccanti
  • Sostegno dei leader del settore con rappresentanti nella Node.js Foundation

Puoi usare i pacchetti con licenza Node.js nel software commerciale?

Una volta che un team scarica e modifica Node.js, ha la libertà di mettere il copyright sulla propria versione del software in qualsiasi momento e applicare una licenza più restrittiva sul proprio lavoro.

La maggior parte dei progetti Node.js rimane open source e le imprese lo usano per framework, librerie e strumenti. Per qualsiasi team che utilizza pacchetti provenienti da npm, non ci devono essere licenze reciproche contenute in nessuno dei moduli (a meno che non sia previsto). Ogni pacchetto e modulo collegato dovrebbe cadere sotto la licenza MIT o una qualsiasi delle licenze in stile BSD, inclusa la licenza ISC.

Come si usa una licenza Node.js?

Ogni componente costruito sulla libreria Node.js può usare qualsiasi licenza software disponibile al momento della distribuzione. I contributori preferiscono usare licenze permissive in quanto danno agli utenti successivi la libertà di prendere le proprie decisioni sul loro software in futuro. Una volta che il team inizia a fare affidamento su altri pacchetti, dovranno assicurarsi che il loro lavoro sia conforme a qualsiasi altra restrizione implicita in quei moduli.

In npm, c’è un comando specifico per aggiungere il testo della licenza a tutti i file di progetto. Gli sviluppatori possono specificare il nome della licenza e il nome dell’autore, con una lista completa di licenze compatibili disponibile qui.

Come affronta Node.js i rischi di sicurezza nei pacchetti?

Ogni volta che uno sviluppatore o un team di sicurezza scopre una nuova vulnerabilità, Node.js rilascerà una versione con un aggiornamento di sicurezza. In alcuni casi, sarà necessaria una patch manuale. Gli sviluppatori devono rivedere frequentemente le vulnerabilità dei loro pacchetti usando il comando audit, che fornirà una correzione raccomandata per la falla di sicurezza.

Mantenete le dipendenze della vostra codebase con Snyk

Ogni progetto che gira in produzione dovrebbe essere soggetto a regolari controlli di vulnerabilità e licenze per tutte le dipendenze.

Snyk aiuta i team a scansionare tutte le dipendenze e a garantire la gestione della conformità delle licenze per tutto il progetto. Per i team di sviluppo di Node.js, avere una chiara supervisione di tutti i pacchetti e garantire la conformità con le licenze durante ogni fase del progetto può aiutare a prevenire problemi importanti che si insinuano nella codebase.

Per vedere come Snyk può aiutare il tuo team a gestire la conformità delle licenze – programma una demo oggi stesso.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.