Środowisko uruchomieniowe Node.js staje się coraz bardziej popularne wśród zespołów, które muszą budować dynamiczne aplikacje internetowe po stronie serwera. Obecnie utrzymywane przez OpenJS Foundation, Node.js ma prawie 2500 współpracowników i jest najszybciej rozwijającym się projektem open-source, z ponad 1 miliardem pobrań do tej pory.
Od czasu jego wydania w 2009 roku, wiele dużych organizacji używa Node.js do budowania aplikacji korporacyjnych i poprawy wydajności aplikacji. Jedną z nich jest PayPal, który zmniejszył czas odpowiedzi dla swojej strony o około 35%, gdy wdrożył Node.js. Inni użytkownicy Node.js to IBM, NASA, Uber, Netflix, a nawet Microsoft.
Pomimo, że staje się on preferowanym językiem rozwoju webserverów, użytkownicy powinni być świadomi, że istnieją licencjonowanie Node.js i względy bezpieczeństwa.
Czym jest licencjonowanie Node.js?
Node.js używa permisywnej licencji MIT dla głównej biblioteki. Licencja MIT odnosi się do wszystkich części modułu Node.js, które nie są zewnętrznie utrzymywane.
Dodatkowe licencje, które mają zastosowanie do pozostałych bibliotek stron trzecich, obejmują licencję Zero Clause BSD i licencję ISC z pełnym plikiem licencji dostępnym tutaj.
Licencje te pozwalają każdemu na używanie, modyfikowanie i redystrybucję oprogramowania w dowolnym czasie, przy czym wymagane jest jedynie uznanie autorstwa przy jednoczesnym zabezpieczeniu autorów. W porównaniu do GNU GPL, licencja MIT nie wymaga od deweloperów udostępniania własnego kodu źródłowego podczas redystrybucji ich oprogramowania.
Jakie są zagrożenia związane z licencją i bezpieczeństwem Node.js?
Node.js używa menedżera pakietów (npm), który ma ponad 1 000 000 dostępnych pakietów. Społeczność deweloperów dla Node.js jest jedną z najbardziej produktywnych, a do 2019 roku platforma npm wzrosła o 250%. Jednym z wyzwań dla programistów z bezpieczeństwem Node.js jest zapewnienie, że każdy pakiet i wszystkie powiązane zależności używane w produkcji otrzymują regularne aktualizacje i poprawki.
Deweloperzy muszą często audytować wszystkie zależności pakietów, aby znaleźć wszelkie nowo odkryte luki. Podczas tworzenia nowych funkcji, programiści muszą upewnić się, że używają bezpiecznych pakietów i załatać wszystkie znane luki przed wypuszczeniem swojego kodu.
Jak duża część licencji Node.js jest open source?
Przedsiębiorstwa uwielbiają model licencjonowania Node.js, ponieważ pozwala im rozwidlać bazę kodu, budować własne fragmenty po stronie serwera i aktualizować powiązane pakiety tylko wtedy, gdy jest to wymagane. Licencje permisywne dają zespołom możliwość uczynienia ich bazy kodowej własnościową w przyszłości, w przeciwieństwie do zasady copyleft z GNU GPL.
W kwestii licencji, deweloperzy muszą wiedzieć, jakich licencji oprogramowania używają ich pakiety, ponieważ istnieje wiele pakietów GPLed dostępnych na npm. W niektórych przypadkach deweloperzy będą dostarczać ten sam pakiet na licencji komercyjnej, co zapobiegnie uruchomieniu klauzuli wzajemności w GPLv3.
Jakie są korzyści modelu licencyjnego Node.js?
Dyskusje na temat licencji permissive versus copyleft będą kontynuowane, ale Node.js wydaje się udowadniać, że interesy komercyjne nie muszą utrudniać współpracy. Dla zespołów, które pracują w ściśle tajnych środowiskach (jak NASA), Node.js i ekosystem npm okazały się być cennym zasobem. Dzięki modelowi, który pozwala poszczególnym zespołom decydować, czy cały ich kod źródłowy powinien być dostępny, czy nie, Node.js daje maksymalną swobodę użytkownikom.
Korzyści z rozwoju Node.js obejmują również:
- Oferuje rozwiązanie programistyczne JavaScript po stronie serwera
- Pozostaje wysoce skalowalne zarówno w kierunku poziomym, jak i pionowym
- Daje programistom pojedynczy język programowania dla aplikacji front- i back-end
- Zwiększa wydajność aplikacji dzięki nieblokującym operacjom I/O
- Wsparcie od liderów branży z przedstawicielami w Node.js Foundation
Czy można używać licencjonowanych pakietów Node.js w komercyjnym oprogramowaniu?
Od momentu, gdy zespół pobierze i zmodyfikuje Node.js, ma swobodę praw autorskich do swojej wersji oprogramowania w dowolnym momencie i zastosować bardziej restrykcyjną licencję na własną pracę.
Większość projektów Node.js pozostaje open source i przedsiębiorstwa używają go do frameworków, bibliotek i narzędzi. Dla wszystkich zespołów używających pakietów npm-sourced, nie może być żadnych wzajemnych licencji zawartych w żadnym z modułów (chyba że jest to zamierzone). Każdy połączony pakiet i moduł powinien podlegać licencji MIT lub którejkolwiek z licencji w stylu BSD, włączając w to licencję ISC.
Jak używać licencji Node.js?
Każdy komponent zbudowany na bibliotece Node.js może używać dowolnej z dostępnych licencji oprogramowania podczas dystrybucji. Autorzy wolą używać licencji permisywnych, ponieważ daje to kolejnym użytkownikom swobodę podejmowania własnych decyzji dotyczących ich oprogramowania w przyszłości. Gdy zespół zacznie polegać na innych pakietach, będzie musiał zapewnić, że jego praca jest zgodna z wszelkimi innymi ograniczeniami implikowanymi przez te moduły.
W npm istnieje specjalne polecenie dodające tekst licencji do wszystkich plików projektu. Programiści mogą określić nazwę licencji i nazwisko autora, a pełna lista kompatybilnych licencji jest dostępna tutaj.
Jak Node.js radzi sobie z zagrożeniami bezpieczeństwa w pakietach?
Gdy deweloper lub zespół bezpieczeństwa odkryje nową lukę, Node.js wyda wersję z aktualizacją bezpieczeństwa. W niektórych przypadkach wymagana będzie ręczna łatka. Deweloperzy powinni często sprawdzać luki w swoich pakietach za pomocą polecenia audit, które dostarczy zalecaną poprawkę dla danego błędu bezpieczeństwa.
Utrzymaj swoje zależności w bazie kodu za pomocą Snyk
Każdy projekt, który działa na produkcji powinien podlegać regularnemu audytowi podatności i licencji dla wszystkich zależności.
Snyk pomaga zespołom skanować wszystkie zależności i zapewnić, że mogą zarządzać zgodnością licencji w całym projekcie. Dla zespołów rozwijających Node.js, posiadanie jasnego nadzoru nad wszystkimi pakietami i zapewnienie zgodności z licencjami na każdym etapie projektu może pomóc w zapobieganiu poważnym problemom wkradającym się do bazy kodu.
Aby zobaczyć jak Snyk może pomóc Twojemu zespołowi w zarządzaniu zgodnością z licencjami – umów się na demo już dziś.