Korzystasz z plików .env w projektach Node.js? Istnieją co najmniej dwa powody, dla których nie warto tego robić!
Pierwszym problemem z plikiem .env jest to... że jest plikiem. Pliki .env często zawierają wrażliwe wartości np. hasła czy sekrety. Istnieje kilka sposobów na omyłkowe upublicznienie tego pliku, takie jak dołączenie go do obrazu dockerowego czy przypadkowy commit do repozytorium. Ponadto, osoba uprawniona do odczytu pliku ma dostęp do wszystkich zmiennych w nim zawartych!
Drugim problemem z plikami .env jest... wbudowane wsparcie dla nich od Node.js 20.6.0. Dotychczas, jednym ze sposobów na pracę z plikami .env była paczka dotenv. Mimo dodania wsparcia w Node prawdopodobnie w wielu projektach ta paczka pozostanie... a jest to błąd! Dalsze wsparcie dla tej paczki, w kontekście ostatnich zmian w Node.js mija się z celem, przez co szansa na naprawianie błędów (w tym błędów bezpieczeństwa) maleje.
Sprawdź linki, by dowiedzieć się więcej:
Table Of Contents Hello Reader The problem with .env files Storing the...
https://dev.to/gregorygaines/stop-using-env-files-now-kp0@Xarviel: oo tego nie doczytałem. Jeśli będą dalej rozwijane to spoko, gorzej jak porzucą maintenance tego depsa i ktoś znajdzie w nim jakieś luki
ale brednie, ciekawe czym chciałbyś zastąpić env i gdzie przetrzymywać wrażliwe dane, przypadkowym commitem nie wrzucisz env do repo, bo musiałbyś go przypadkowo usunąć z gitignora, a to już bardziej gruby błąd niż przypadek, poza tym do git puszuje się z lokalnego środowiska, więc wrażliwe dane powinny dotyczyć kont testowych, jak ktoś korzysta z produkcyjnych kont na lokalu, to raczej powinien zmienić podejście, a nie odchodzić od .env. Aws parameter też wrzuca dane konfiguracyjne do plik env, tylko robi to podczas builda.
Ten artykuł to dramat. Dosłownie punkt 1 to błąd argumentacyjny, nikt nie mówi że jedyną alternatywą dla .env jest wpisywanie sekretów w plaintekście. To jakby powiedzieć "chcesz kupić auto? a wiesz że są wypadki? dlaczego chcesz zamordować rodzinę z dziećmi?" xD a paragraf zatytułowany VPC Endpoints pokazuje że autor nie ma pojęcia jak działają sieci.
@MrMadMatt: Powinienem był doprecyzować, mówiłem o nodejs na backend. Ja osobiście frontend teraz piszę w Rust :p
@Mateuszto: jeśli mówimy o froncie, to teraz sobie testuje bun
Ta wbudowana obsługa
.env
działa jedynie podczas uruchamiania skryptunode --env-file=config.env index.js
? Jeśli nie ma opcji zrobienia tego dynamicznie podczas działania aplikacji to biblioteki podobne dodotenv
raczej nadal będą używane.