MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Cacher correctement les informations d'identification de la base de données

...J'ai mon fichier de connexion db et un autre fichier "protégé", où se trouvent mes informations d'identification, et ce fichier est inclus dans .gitignore. Je l'importe et accède aux données..

La bonne façon de le faire est d'utiliser des variables d'environnement.

Utiliser des variables d'environnement

Les variables d'environnement sont définies sur l'environnement , c'est-à-dire votre machine de développement locale ou le serveur de production distant. Ensuite, dans votre application, vous lisez les variables d'environnement et les utilisez de manière appropriée.

Il y a (au moins) quelques raisons pour lesquelles c'est généralement fait comme ça :

  • Les informations d'identification n'existent pas dans un fichier qui peut être lu par une personne consultant le contenu du référentiel. Quelqu'un qui clone le référentiel n'a pas besoin de connaître votre informations d'identification de la base de données.
  • Les identifiants sont probablement différents d'un environnement à l'autre. Vous utilisez probablement une base de données différente sur votre ordinateur de développement local et une base de données différente sur votre serveur de production distant.

Voici comment définir les variables d'environnement (c'est pour Linux, d'autres systèmes d'exploitation peuvent être différents) :

$ export MONGO_DB_USERNAME=foo
$ export MONGO_DB_PASSWORD=bar

et voici comment vous les lisez dans Node.js :

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

ou passer des variables au processus lors du démarrage

Alternativement, vous pouvez passer des variables lors du démarrage du processus comme suit :

$ MONGO_DB_USERNAME=foo MONGO_DB_PASSWORD=bar node app.js

Cependant, cela est généralement déconseillé car vous démarrez probablement votre processus via le script de démarrage npm. Depuis package.json , où le npm start la commande est définie, est toujours validée dans le référentiel, elle va à l'encontre de l'objectif de masquer les informations d'identification.