L’environnement d’exécution Node.js devient de plus en plus populaire auprès des équipes qui ont besoin de construire des applications web dynamiques côté serveur. Actuellement maintenu par la Fondation OpenJS, 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 organisations majeures utilisent désormais Node.js pour construire des applications d’entreprise et améliorer les performances des applications. L’une d’entre elles est PayPal, qui a réduit les temps de réponse de sa page d’environ 35 % lorsqu’elle a déployé Node.js. Parmi les autres utilisateurs de Node.js figurent IBM, la NASA, Uber, Netflix et même Microsoft.
Bien qu’il soit en train de devenir le langage de développement de serveur Web préféré, les utilisateurs doivent savoir qu’il existe des considérations relatives à la licence et à la sécurité de Node.js.
Qu’est-ce que la licence Node.js ?
Node.js utilise une licence MIT permissive pour la bibliothèque principale. La licence MIT s’applique à toutes les parties du module Node.js qui ne sont pas maintenues de manière externe.
Les licences supplémentaires qui s’appliquent aux bibliothèques tierces restantes comprennent la licence BSD à clause zéro et la licence ISC avec le fichier de licence complet disponible ici.
Ces licences permettent à quiconque d’utiliser, de modifier et de redistribuer le logiciel à tout moment, avec seulement une attribution requise tout en indemnisant les contributeurs. Par rapport à la licence GNU GPL, la licence MIT n’exige pas que les développeurs mettent à disposition leur propre code source lors de la redistribution de leur logiciel.
Quels sont les risques de licence et de sécurité de Node.js ?
Node.js utilise un gestionnaire de paquets (npm) qui a plus de 1 000 000 de paquets disponibles. La communauté de développeurs pour Node.js est l’une des plus productives et en 2019, la plateforme npm a connu une croissance de 250 %. L’un des défis pour les développeurs avec la sécurité Node.js est de s’assurer que tout paquet et toutes les dépendances liées utilisés en production reçoivent des mises à jour et des correctifs réguliers.
Les développeurs doivent vérifier fréquemment toutes les dépendances des paquets pour trouver toute vulnérabilité nouvellement découverte. Lors de la création de nouvelles fonctionnalités, les développeurs doivent s’assurer qu’ils utilisent des paquets sécurisés et qu’ils corrigent toute vulnérabilité connue avant de publier leur code.
Combien de licences Node.js sont open source ?
Les entreprises aiment le modèle de licence Node.js car il leur permet de forker la base de code, de construire leurs propres snippets côté serveur et de ne mettre à jour leurs paquets liés que lorsque cela est nécessaire. Les licences permissives donnent aux équipes la possibilité de rendre leur base de code propriétaire à l’avenir, par opposition au principe de copyleft de la GNU GPL.
En termes de licence, les développeurs doivent savoir quelles licences logicielles leurs paquets utilisent car il y a beaucoup de paquets sous licence GPL disponibles sur npm. Dans certains cas, les développeurs fourniront le même paquet sous une licence commerciale, ce qui empêcherait de déclencher la clause de réciprocité de la GPLv3.
Quels sont les avantages du modèle de licence de Node.js ?
Les débats sur les licences permissives versus copyleft se poursuivront, mais Node.js semble prouver que les intérêts commerciaux n’ont pas à entraver la collaboration. Pour les équipes qui travaillent dans des environnements hautement classifiés (comme la NASA), Node.js et l’écosystème npm se sont avérés être une ressource précieuse. Avec un modèle qui permet aux équipes individuelles de décider si l’ensemble de leur code source doit être disponible ou non, Node.js donne un maximum de liberté aux utilisateurs.
Les avantages de développement de Node.js comprennent également :
- Offre une solution de programmation JavaScript côté serveur
- Reste hautement évolutive dans les deux directions horizontale et verticale
- Donne aux développeurs un langage de programmation unique pour les applications frontales et dorsales
- Augmente les performances des applications avec des opérations d’E/S non bloquantes
- Soutien des leaders de l’industrie avec des représentants sur la Node.js Foundation
Pouvez-vous utiliser des paquets sous licence Node.js dans des logiciels commerciaux ?
Une fois qu’une équipe a téléchargé et modifié Node.js, elle a la liberté de protéger par copyright sa version du logiciel à tout moment et d’appliquer une licence plus restrictive sur son propre travail.
La majorité des projets Node.js restent open source et les entreprises l’utilisent pour les frameworks, les bibliothèques et les outils. Pour toutes les équipes utilisant des paquets sourcés par npm, il doit y avoir zéro licence réciproque contenue dans l’un des modules (sauf si cela est prévu). Chaque paquet et module lié doit tomber sous la licence MIT ou l’une des licences de type BSD, y compris la licence ISC.
Comment utiliser une licence Node.js ?
Tout composant construit sur la bibliothèque Node.js peut utiliser l’une des licences logicielles disponibles lors de la distribution. Les contributeurs préfèrent utiliser des licences permissives car cela donne aux utilisateurs ultérieurs la liberté de prendre leurs propres décisions concernant leur logiciel à l’avenir. Une fois que l’équipe commence à s’appuyer sur d’autres paquets, elle devra s’assurer que son travail est conforme à toute autre restriction impliquée dans ces modules.
Dans npm, il existe une commande spécifique pour ajouter un texte de licence à tous les fichiers du projet. Les développeurs peuvent spécifier le nom de la licence et le nom de l’auteur, avec une liste complète des licences compatibles disponible ici.
Comment Node.js aborde-t-il les risques de sécurité dans les paquets ?
Quand un développeur ou une équipe de sécurité découvre une nouvelle vulnérabilité, Node.js publiera une version avec une mise à jour de sécurité. Dans certains cas, un patch manuel sera nécessaire. Les développeurs doivent examiner fréquemment les vulnérabilités de leurs paquets en utilisant la commande audit, qui fournira un correctif recommandé pour la faille de sécurité.
Maintenir les dépendances de votre codebase avec Snyk
Tout projet qui fonctionne en production doit être soumis à un audit régulier des vulnérabilités et des licences pour toutes les dépendances.
Snyk aide les équipes à analyser toutes les dépendances et à s’assurer qu’elles peuvent gérer la conformité des licences tout au long du projet. Pour les équipes de développement de Node.js, avoir une supervision claire de tous les paquets et assurer la conformité des licences pendant chaque étape du projet peut aider à prévenir les problèmes majeurs qui se glissent dans la base de code.
Pour voir comment Snyk peut aider votre équipe à gérer la conformité des licences – programmez une démo aujourd’hui.