In this article
Licenciamento e considerações de segurança do Node.js
O ambiente de execução Node.js está ganhando popularidade entre equipes que precisam criar aplicações web dinâmicas do lado do servidor. Atualmente mantido pela OpenJS Foundation, o Node.js conta com quase 2.500 contribuidores e é o projeto de código aberto que mais cresce, com mais de 1 bilhão de downloads até hoje.
Desde seu lançamento em 2009, muitas grandes organizações passaram a usar o Node.js para criar aplicações corporativas e melhorar o desempenho delas. Uma delas é o PayPal, que reduziu o tempo de resposta da página em cerca de 35% ao implementar o Node.js. Outros usuários do Node.js incluem IBM, NASA, Uber, Netflix e até mesmo a Microsoft.
Embora esteja se tornando a linguagem preferida para o desenvolvimento de servidores web, é importante conhecer as considerações de licenciamento e segurança do Node.js.
O que é o licenciamento do Node.js?
O Node.js usa uma licença MIT permissiva para a biblioteca principal. A licença MIT se aplica a todas as partes do módulo Node.js que não são mantidas externamente.
As licenças adicionais aplicáveis às demais bibliotecas de terceiros incluem a licença BSD Zero Clause e a licença ISC. O arquivo completo de licenças está disponível aqui.
Essas licenças permitem que qualquer pessoa use, modifique e redistribua o software a qualquer momento, exigindo apenas a atribuição de créditos e isentando os contribuidores de responsabilidade. Ao contrário da GNU GPL, a licença MIT não exige que os desenvolvedores disponibilizem o próprio código-fonte ao redistribuir o software.
Quais são os riscos de licenciamento e segurança do Node.js?
O Node.js usa um gerenciador de pacotes (npm) que conta com mais de 1.000.000 de pacotes disponíveis. A comunidade de desenvolvedores do Node.js é uma das mais produtivas e, em 2019, a plataforma npm havia crescido 250%. Um dos desafios para os desenvolvedores em relação à segurança do Node.js é garantir que todos os pacotes e suas dependências usados em produção recebam atualizações e correções regularmente.
Os desenvolvedores precisam auditar todas as dependências dos pacotes com frequência para encontrar vulnerabilidades recém-descobertas. Ao criar novos recursos, é importante usar pacotes seguros e corrigir todas as vulnerabilidades conhecidas antes de lançar o código.
Quanto do licenciamento do Node.js é de código aberto?
As empresas gostam do modelo de licenciamento do Node.js, pois ele permite criar ramificações da base de código, desenvolver trechos próprios para o servidor e atualizar os pacotes vinculados somente quando necessário. As licenças permissivas dão às equipes a opção de tornar a base de código proprietária no futuro, em vez de seguir o princípio copyleft da GNU GPL.
Em relação ao licenciamento, os desenvolvedores precisam saber quais licenças de software são usadas pelos pacotes, pois há muitos pacotes licenciados sob GPL disponíveis no npm. Em alguns casos, os desenvolvedores oferecem o mesmo pacote sob uma licença comercial, o que evita acionar a cláusula de reciprocidade da GPLv3.
Quais são os benefícios do modelo de licenciamento do Node.js?
O debate entre licenças permissivas e copyleft vai continuar, mas o Node.js parece provar que os interesses comerciais não precisam impedir a colaboração. Para equipes que trabalham em ambientes altamente sigilosos, como a NASA, o Node.js e o ecossistema npm se mostraram recursos valiosos. Com um modelo que permite que cada equipe decida se quer ou não disponibilizar todo o código-fonte, o Node.js oferece o máximo de liberdade aos usuários.
Entre os benefícios de desenvolvimento do Node.js, estão:
Oferece uma solução de programação JavaScript do lado do servidor
É altamente escalável tanto horizontal quanto verticalmente
Permite que os desenvolvedores usem uma única linguagem de programação em aplicações front-end e back-end
Aumenta o desempenho das aplicações com operações de E/S não bloqueantes
Conta com o apoio de líderes do setor, com representantes na Node.js Foundation
Você pode usar pacotes licenciados do Node.js em softwares comerciais?
Depois que uma equipe baixa e modifica o Node.js, ela pode registrar os direitos autorais de sua versão do software a qualquer momento e aplicar uma licença mais restritiva ao próprio trabalho.
A maioria dos projetos Node.js continua sendo de código aberto, e as empresas usam o Node.js em frameworks, bibliotecas e ferramentas. Para equipes que usam pacotes obtidos pelo npm, nenhum dos módulos pode conter licenças recíprocas, a menos que isso seja intencional. Cada pacote e módulo vinculado deve estar coberto pela licença MIT ou por uma das licenças no estilo BSD, incluindo a licença ISC.
Como usar uma licença do Node.js?
Qualquer componente desenvolvido com base na biblioteca Node.js pode usar qualquer licença de software disponível ao ser distribuído. Os contribuidores preferem licenças permissivas, pois elas dão aos usuários seguintes a liberdade de decidir o que fazer com o próprio software no futuro. Quando a equipe começa a depender de outros pacotes, precisa garantir que seu trabalho cumpra as demais restrições impostas por esses módulos.
No npm, há um comando específico para adicionar o texto da licença a todos os arquivos do projeto. Os desenvolvedores podem especificar o nome da licença e do autor. Uma lista completa das licenças compatíveis está disponível aqui.
Como o Node.js lida com riscos de segurança em pacotes?
Sempre que um desenvolvedor ou uma equipe de segurança descobre uma nova vulnerabilidade, o Node.js lança uma versão com uma atualização de segurança. Em alguns casos, é necessário aplicar uma correção manual. Os desenvolvedores precisam verificar com frequência as vulnerabilidades dos pacotes usando o comando audit, que recomenda uma correção para a falha de segurança.
Mantenha as dependências da sua base de código em dia com a Snyk
Todo projeto em produção deve passar por auditorias regulares de vulnerabilidades e licenças em todas as dependências.
A Snyk ajuda as equipes a verificar todas as dependências e a gerenciar a conformidade com as licenças em todo o projeto. Para equipes que desenvolvem com Node.js, ter visibilidade clara de todos os pacotes e garantir a conformidade com as licenças em cada etapa do projeto ajuda a evitar que problemas sérios apareçam na base de código.
Comece a resolver desafios de capture the flag
Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.