... Mam plik połączenia db i inny "chroniony" plik, w którym znajdują się moje poświadczenia, a ten plik jest zawarty w .gitignore. Importuję go i docieram do danych..
Prawidłowym sposobem na to jest użycie zmiennych środowiskowych.
Użyj zmiennych środowiskowych
Zmienne środowiskowe są ustawione w środowisku , tj. lokalna maszyna programistyczna lub zdalny serwer produkcyjny. Następnie w aplikacji odczytujesz zmienne środowiskowe i używasz ich odpowiednio.
Jest (przynajmniej) kilka powodów, dla których zwykle robi się to w ten sposób:
- Poświadczenia nie istnieją w pliku, który może odczytać ktoś przeglądający zawartość repozytorium. Ktoś klonujący repozytorium nie musi znać Twojego poświadczenia bazy danych.
- Poświadczenia są prawdopodobnie różne w różnych środowiskach. Prawdopodobnie używasz innej bazy danych na lokalnym komputerze deweloperskim i innej bazy danych na zdalnym serwerze produkcyjnym.
Oto jak ustawiasz zmienne środowiskowe (dotyczy Linuksa, inne systemy operacyjne mogą być inne):
$ export MONGO_DB_USERNAME=foo
$ export MONGO_DB_PASSWORD=bar
a oto jak je czytać w Node.js:
console.log(process.env.MONGO_DB_USERNAME) // logs 'foo'
console.log(process.env.MONGO_DB_PASSWORD) // logs 'bar'
lub przekaż zmienne do procesu podczas uruchamiania
Alternatywnie możesz przekazać zmienne podczas uruchamiania procesu w następujący sposób:
$ MONGO_DB_USERNAME=foo MONGO_DB_PASSWORD=bar node app.js
Jednak generalnie jest to odradzane, ponieważ najprawdopodobniej rozpoczynasz swój proces za pomocą skryptu startowego npm. Od package.json
, gdzie npm start
komenda jest zdefiniowana, jest zawsze przekazywana do repozytorium, co uniemożliwia ukrycie danych uwierzytelniających.