MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Nascondere correttamente le credenziali del database

...ho il mio file di connessione db e un altro file "protetto", dove sono le mie credenziali, e questo file è incluso in .gitignore. Lo importo e raggiungo i dati..

Il modo corretto per farlo è utilizzare le variabili ambientali.

Utilizza variabili ambientali

Le variabili ambientali sono impostate sull'ambiente , ovvero la tua macchina di sviluppo locale o il server di produzione remoto. Quindi, all'interno della tua app, leggi le variabili di ambiente e le usi in modo appropriato.

Ci sono (almeno) un paio di ragioni per cui di solito si fa in questo modo:

  • Le credenziali non esistono in un file che può essere letto da qualcuno che visualizza il contenuto del repository. Qualcuno che clona il repository non ha bisogno di conoscere il tuo credenziali del database.
  • Le credenziali sono probabilmente diverse tra gli ambienti. Probabilmente stai utilizzando un database diverso sulla tua macchina di sviluppo locale e un database diverso nel tuo server di produzione remoto.

Ecco come impostare le variabili di ambiente (questo è per Linux, altri sistemi operativi potrebbero essere diversi):

$ export MONGO_DB_USERNAME=foo
$ export MONGO_DB_PASSWORD=bar

ed ecco come li leggi all'interno di Node.js:

console.log(process.env.MONGO_DB_USERNAME) // logs 'foo'
console.log(process.env.MONGO_DB_PASSWORD) // logs 'bar'

o passare variabili al processo all'avvio

In alternativa, puoi passare le variabili all'avvio del processo in questo modo:

$ MONGO_DB_USERNAME=foo MONGO_DB_PASSWORD=bar node app.js

Tuttavia, ciò è generalmente sconsigliato poiché molto probabilmente stai avviando il processo tramite lo script di avvio npm. Da package.json , dove npm start comando è definito, è sempre impegnato nel repository vanifica l'intero scopo di nascondere le credenziali.