El entorno de ejecución Node.js es cada vez más popular entre los equipos que necesitan crear aplicaciones web dinámicas del lado del servidor. Mantenido actualmente por la Fundación OpenJS, Node.js cuenta con casi 2.500 colaboradores y es el proyecto de código abierto de más rápido crecimiento, con más de mil millones de descargas hasta la fecha.
Desde su lanzamiento en 2009, muchas organizaciones importantes utilizan ahora Node.js para crear aplicaciones empresariales y mejorar el rendimiento de las aplicaciones. Una de ellas es PayPal, que redujo los tiempos de respuesta de su página en aproximadamente un 35% cuando desplegó Node.js. Otros usuarios de Node.js son IBM, la NASA, Uber, Netflix e incluso Microsoft.
Aunque se está convirtiendo en el lenguaje de desarrollo de servidores web preferido, los usuarios deben ser conscientes de que existen consideraciones de licencia y seguridad de Node.js.
¿Qué es la licencia de Node.js?
Node.js utiliza una licencia MIT permisiva para la biblioteca principal. La licencia MIT se aplica a todas las partes del módulo Node.js no mantenidas externamente.
Licencias adicionales que se aplican al resto de las bibliotecas de terceros incluyen la licencia BSD de cláusula cero y la licencia ISC con el archivo de licencia completo disponible aquí.
Estas licencias permiten a cualquiera utilizar, modificar y redistribuir el software en cualquier momento, con sólo la atribución requerida mientras se indemniza a los contribuyentes. En comparación con la GPL de GNU, la licencia MIT no requiere que los desarrolladores pongan a disposición su propio código fuente cuando redistribuyen su software.
¿Cuáles son los riesgos de licencia y seguridad de Node.js?
Node.js utiliza un gestor de paquetes (npm) que tiene más de 1.000.000 de paquetes disponibles. La comunidad de desarrolladores para Node.js es una de las más productivas y en 2019, la plataforma npm había crecido un 250%. Uno de los retos para los desarrolladores con la seguridad de Node.js es garantizar que cualquier paquete y todas las dependencias vinculadas que se utilicen en producción reciban actualizaciones y parches regulares.
Los desarrolladores tienen que auditar todas las dependencias de los paquetes con frecuencia para encontrar cualquier vulnerabilidad recién descubierta. Cuando construyan nuevas funciones, los desarrolladores deben asegurarse de utilizar paquetes seguros y parchear cualquier vulnerabilidad conocida antes de liberar su código.
¿Qué parte de la licencia de Node.js es de código abierto?
Las empresas adoran el modelo de licencia de Node.js, ya que les permite bifurcar el código base, construir sus propios fragmentos del lado del servidor y sólo actualizar sus paquetes vinculados cuando sea necesario. Las licencias permisivas dan a los equipos la opción de hacer que su base de código sea propietaria en el futuro, a diferencia del principio de copyleft de la GPL de GNU.
En términos de licencias, los desarrolladores deben saber qué licencias de software utilizan sus paquetes porque hay muchos paquetes con GPL disponibles en npm. En algunos casos, los desarrolladores proporcionarán el mismo paquete bajo una licencia comercial, lo que evitaría que se activara la cláusula de reciprocidad de GPLv3.
¿Cuáles son los beneficios del modelo de licencia de Node.js?
Los debates sobre las licencias permisivas frente a las de copyleft continuarán, pero Node.js parece demostrar que los intereses comerciales no tienen por qué impedir la colaboración. Para los equipos que trabajan en entornos altamente clasificados (como la NASA), Node.js y el ecosistema npm han demostrado ser un recurso valioso. Con un modelo que permite a los equipos individuales decidir si todo su código fuente debe estar disponible o no, Node.js da la máxima libertad a los usuarios.
Las ventajas de desarrollo de Node.js también incluyen:
- Ofrece una solución de programación JavaScript del lado del servidor
- Se mantiene altamente escalable en direcciones horizontales y verticales
- Ofrece a los desarrolladores un único lenguaje de programación para aplicaciones frontales y de back-end
- Aumenta el rendimiento de las aplicaciones con operaciones de E/S sin bloqueo
- Apoyo de los líderes de la industria con representantes en la Node.js Foundation
Una vez que un equipo descarga y modifica Node.js, tiene la libertad de registrar los derechos de autor de su versión del software en cualquier momento y aplicar una licencia más restrictiva en su propio trabajo.
La mayoría de los proyectos de Node.js siguen siendo de código abierto y las empresas lo utilizan para frameworks, bibliotecas y herramientas. Para cualquier equipo que utilice paquetes de origen npm, debe haber cero licencias recíprocas contenidas en cualquiera de los módulos (a menos que se pretenda). Cada paquete y módulo vinculado debe estar bajo la licencia MIT o cualquiera de las licencias de estilo BSD, incluyendo la licencia ISC.
¿Cómo se utiliza una licencia de Node.js?
Cualquier componente construido sobre la librería Node.js puede utilizar cualquiera de las licencias de software disponibles en el momento de su distribución. Los contribuidores prefieren utilizar licencias permisivas, ya que da a los usuarios posteriores la libertad de tomar sus propias decisiones sobre su software en el futuro. Una vez que el equipo empiece a depender de otros paquetes, tendrá que asegurarse de que su trabajo cumple con cualquier otra restricción implícita en esos módulos.
En npm, hay un comando específico para añadir el texto de la licencia a todos los archivos del proyecto. Los desarrolladores pueden especificar el nombre de la licencia y el nombre del autor, con una lista completa de licencias compatibles disponible aquí.
¿Cómo aborda Node.js los riesgos de seguridad en los paquetes?
Cuando un desarrollador o equipo de seguridad descubre una nueva vulnerabilidad, Node.js lanzará una versión con una actualización de seguridad. En algunos casos, será necesario un parche manual. Los desarrolladores deben revisar con frecuencia las vulnerabilidades de sus paquetes mediante el comando audit, que proporcionará una corrección recomendada para el fallo de seguridad.
Mantenga las dependencias de su base de código con Snyk
Cualquier proyecto que se ejecute en producción debe estar sujeto a una auditoría regular de vulnerabilidades y licencias para todas las dependencias.
Snyk ayuda a los equipos a escanear todas las dependencias y asegurarse de que pueden gestionar el cumplimiento de las licencias en todo el proyecto. Para los equipos de desarrollo de Node.js, tener una clara supervisión de todos los paquetes y asegurar el cumplimiento de las licencias durante cada etapa del proyecto puede ayudar a prevenir problemas importantes que se cuelen en el código base.
Para ver cómo Snyk puede ayudar a su equipo a gestionar el cumplimiento de licencias – programe una demostración hoy mismo.