In this article
Licences et sécurité de Node.js : les points à connaître
L’environnement d’exécution Node.js gagne en popularité auprès des équipes qui doivent créer des applications web dynamiques côté serveur. Aujourd’hui maintenu par l’OpenJS Foundation, Node.js compte près de 2 500 contributeurs et est le projet open source à la croissance la plus rapide, avec plus d’un milliard de téléchargements à ce jour.
Depuis sa sortie en 2009, de nombreuses grandes organisations utilisent Node.js pour créer des applications d’entreprise et améliorer leurs performances. PayPal en fait partie : l’entreprise a réduit d’environ 35 % le temps de réponse de ses pages en déployant Node.js. IBM, la NASA, Uber, Netflix et même Microsoft comptent également parmi les utilisateurs de Node.js.
Même si Node.js devient le langage de prédilection pour le développement de serveurs web, les utilisateurs doivent tenir compte des considérations liées à ses licences et à sa sécurité.
Qu’est-ce que la licence de Node.js ?
La bibliothèque principale de Node.js est distribuée sous une licence MIT permissive. Celle-ci s’applique à toutes les parties du module Node.js qui ne sont pas maintenues par des entités externes.
Les autres bibliothèques tierces sont couvertes par des licences supplémentaires, notamment la licence BSD Zero Clause et la licence ISC. Le fichier de licence complet est disponible ici.
Ces licences autorisent chacun à utiliser, modifier et redistribuer le logiciel à tout moment, à condition d’en attribuer la paternité, tout en dégageant les contributeurs de toute responsabilité. Contrairement à la GNU GPL, la licence MIT n’oblige pas les développeurs à rendre leur code source accessible lorsqu’ils redistribuent leur logiciel.
Quels sont les risques liés aux licences et à la sécurité de Node.js ?
Node.js utilise un gestionnaire de paquets (npm), qui propose plus de 1 000 000 de paquets. La communauté de développeurs Node.js est l’une des plus productives et, en 2019, la plateforme npm avait enregistré une croissance de 250 %. Pour les développeurs, l’un des défis liés à la sécurité de Node.js consiste à s’assurer que chaque paquet utilisé en production, ainsi que toutes ses dépendances, bénéficie régulièrement de mises à jour et de correctifs.
Les développeurs doivent auditer fréquemment toutes les dépendances des paquets pour détecter les nouvelles vulnérabilités découvertes. Lorsqu’ils développent de nouvelles fonctionnalités, ils doivent veiller à utiliser des paquets sécurisés et à corriger toute vulnérabilité connue avant de publier leur code.
Quelle part de Node.js est open source ?
Les entreprises apprécient le modèle de licence de Node.js, car il leur permet de créer une branche du code source, de développer leurs propres extraits côté serveur et de ne mettre à jour les paquets associés qu’en cas de besoin. Les licences permissives permettent aux équipes de rendre leur code propriétaire à l’avenir, contrairement au principe du copyleft de la GNU GPL.
En matière de licences, les développeurs doivent savoir quelles licences logicielles s’appliquent à leurs paquets, car npm propose de nombreux paquets sous licence GPL. Dans certains cas, les développeurs proposent le même paquet sous licence commerciale, ce qui permet d’éviter de déclencher la clause de réciprocité de la GPLv3.
Quels sont les avantages du modèle de licence de Node.js ?
Le débat entre licences permissives et copyleft se poursuivra, mais Node.js semble montrer que les intérêts commerciaux ne sont pas incompatibles avec la collaboration. Pour les équipes travaillant dans des environnements hautement confidentiels, comme la NASA, Node.js et l’écosystème npm se sont révélés être des ressources précieuses. En laissant chaque équipe décider si elle souhaite rendre l’ensemble de son code source accessible, Node.js offre une liberté maximale aux utilisateurs.
Node.js présente également les avantages suivants pour le développement :
Propose une solution de programmation JavaScript côté serveur
Reste hautement évolutif, à l’horizontale comme à la verticale
Permet aux développeurs d’utiliser un seul langage de programmation pour les applications front-end et back-end
Améliore les performances des applications grâce aux opérations d’E/S non bloquantes
Bénéficie du soutien de leaders du secteur, dont des représentants au sein de la Node.js Foundation
Peut-on utiliser des paquets sous licence Node.js dans un logiciel commercial ?
Lorsqu’une équipe télécharge et modifie Node.js, elle est libre de protéger sa version du logiciel par le droit d’auteur à tout moment et d’appliquer une licence plus restrictive à ses propres travaux.
La plupart des projets Node.js restent open source, et les entreprises les utilisent pour leurs frameworks, bibliothèques et outils. Les équipes qui utilisent des paquets provenant de npm doivent s’assurer qu’aucune licence à réciprocité ne figure dans les modules, sauf si c’est voulu. Chaque paquet et module associé doit être couvert par la licence MIT ou par l’une des licences de type BSD, notamment la licence ISC.
Comment utiliser une licence Node.js ?
Tout composant créé à partir de la bibliothèque Node.js peut être distribué sous l’une des licences logicielles disponibles. Les contributeurs privilégient les licences permissives, qui permettent aux utilisateurs en aval de décider librement de l’avenir de leur logiciel. Dès qu’une équipe commence à s’appuyer sur d’autres paquets, elle doit s’assurer que ses travaux respectent les restrictions éventuelles imposées par ces modules.
Dans npm, une commande permet d’ajouter le texte de la licence à tous les fichiers du projet. Les développeurs peuvent préciser le nom de la licence et celui de l’auteur. La liste complète des licences compatibles est disponible ici.
Comment Node.js gère-t-il les risques de sécurité liés aux paquets ?
Lorsqu’un développeur ou une équipe de sécurité découvre une nouvelle vulnérabilité, Node.js publie une version intégrant une mise à jour de sécurité. Dans certains cas, un correctif manuel est nécessaire. Les développeurs doivent régulièrement vérifier les vulnérabilités de leurs paquets à l’aide de la commande d’audit, qui recommande une solution pour corriger la faille de sécurité.
Gérez les dépendances de votre base de code avec Snyk
Tout projet exécuté en production doit faire l’objet d’audits réguliers des vulnérabilités et des licences de l’ensemble de ses dépendances.
Snyk aide les équipes à analyser toutes les dépendances et à gérer la conformité des licences tout au long du projet. Pour les équipes qui développent avec Node.js, une visibilité claire sur tous les paquets et la vérification de la conformité des licences à chaque étape du projet permettent d’éviter l’apparition de problèmes majeurs dans la base de code.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.