sql >> Base de Datos >  >> NoSQL >> MongoDB

Ocultar correctamente las credenciales de la base de datos

...Tengo mi archivo de conexión db y otro archivo "protegido", donde están mis credenciales, y este archivo está incluido en .gitignore. Lo importo y alcanzo los datos..

La forma correcta de hacerlo es usando variables ambientales.

Usar variables ambientales

Las variables ambientales se establecen en el entorno , es decir, su máquina de desarrollo local o el servidor de producción remoto. Luego, dentro de su aplicación, lee las variables de entorno y las usa apropiadamente.

Hay (al menos) un par de razones por las que normalmente se hace así:

  • Las credenciales no existen en un archivo que pueda leer alguien que vea el contenido del repositorio. Alguien que clone el repositorio no necesita saber tu credenciales de la base de datos.
  • Es probable que las credenciales sean diferentes entre entornos. Es probable que esté utilizando una base de datos diferente en su máquina de desarrollo local y una base de datos diferente en su servidor de producción remoto.

Así es como configura las variables de entorno (esto es para Linux, otros sistemas operativos pueden ser diferentes):

$ export MONGO_DB_USERNAME=foo
$ export MONGO_DB_PASSWORD=bar

y así es como los lee dentro de Node.js:

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

o pasar variables al proceso al iniciar

Alternativamente, puede pasar variables al iniciar el proceso de esta manera:

$ MONGO_DB_USERNAME=foo MONGO_DB_PASSWORD=bar node app.js

Sin embargo, eso generalmente se desaconseja, ya que lo más probable es que esté iniciando su proceso a través del script de inicio de npm. Desde package.json , donde comienza el npm start el comando está definido, siempre está comprometido con el repositorio, anula todo el propósito de ocultar las credenciales.