秘密情報の保護[NODE.JS]

4022 ワード

NodeとMongoDBが接続された日に戻りましょう.2人の子供を接続するには、MongoDBから発行された鍵と自分で設定したパスワードを入れる必要があります.<パスワード!>こちらです.
このコードをgithubにアップロードしたらどうなりますか?誰もが私のMongoDBパスワードを知っています.したがって,外部に露出すべきでないコードがあれば,良好な隠蔽方法が必要である.
// index.js

...

// 몽구스 연결
const mongoose = require('mongoose');
mongoose
  .connect('mongodb+srv://devCecy:<비밀번호!!>@devcecy.dprgf.mongodb.net/myFirstDatabase?retryWrites=true&w=majority', {
    // useNewUrlParser: true,
    // useUnifiedTopology: true,
    // useCreateIndex: true,
    // useFindAndModify: false,
  })
  .then(() => console.log('MongoDB conected'))
  .catch((err) => {
    console.log(err);
  });

...
開発環境と導入環境の両方で、秘密情報を非表示にします.今日は開発環境のために秘密情報を隠しましょう.
ルートディレクトリにconfigというフォルダを作成し、開発します.js, key.js, production.jsの3種類のファイルが生成されました.
development.jsファイルは、開発環境の機密情報を作成し、生成します.jsファイルは、導入環境の機密情報を記述します.鍵もあります.jsファイルでは、現在どの環境にあるかを理解し、環境に適したコードに分割します.

では、次に隠したいURIを抽出します.もちろん、実際のコードでは<パスワード!!>ここには実際のパスワードがあるはずです.
'mongodb+srv://devCecy:<비밀번호!!>@devcecy.dprgf.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'
まず、開発環境のために開発します.jsファイルです.
モジュールは他のファイルで使用できます.exportで包むと、変数mongouRIに隠したい情報が入ります.
// development.js

module.exports = {
  mongoURI:
    'mongodb+srv://devCecy:<비밀번호!!>@devcecy.dprgf.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',
};
production.jsファイルも開発環境と同様に、外部ファイルで使用するためにエクスポートモジュールとして監査されます.env.MONGO URIという環境変数を加えた.
開発環境とは異なり、導入環境は実際の導入後も機密情報を使用する必要があるため、MONGO URI変数に隠したいコードをHerokuというサイトに追加しました.私はまだ配備段階ではなく、本格的なHerokuサイトを使っていないので、コードだけを書いてくれました.(Web環境では、環境変数を使用して開発、テスト、導入環境に基づいてファイルを作成し、情報を非表示にすることもありますが、サイトを単独で使用するわけではありません.そのため、このセクションでさらに説明したいと思います.)
// production.js

module.exports = {
  mongoURI: process.env.MONGO_URI,
};
key.jsファイルの環境を理解し、区分コードを記述します.
process.env.NODE ENVは環境変数であり、実際にサーバを実行すると、導入環境の製品であれば開発環境の製品を確認できます.それを利用して、次のように空気を入れます.(process.env.NODE ENVを撮影するとundefinedが表示されるため、ブランチはelseに移動し、開発環境コードを使用します.)
if (process.env.NODE_ENV === 'production') { // 배포환경이면, 
  module.exports = require('./production'); // production.js 파일 코드를 사용하고,
} else { // 배포환경 이외의 환경이라면 (현재는 배포,개발환경 2가지이기때문에!)
  module.exports = require('./development'); // development.js파일 코드를 사용한다. 
}
分割したので、インデックスを再作成します.jsファイルを返し、秘密情報のURI位置に作成したばかりの鍵を返します.jsコードを追加します.
./config/keyをrequireにインポートした後、元のURIがある場所に入れます.key.jsファイルはオブジェクト{}をエクスポートしていますが、実際に使用したいのはそのオブジェクトのmongouRIなのでconfigです.mongouRIにインポートすればいいです
...

// development와 production 분기
const config = require('./config/key');

...

// 몽구스 연결
const mongoose = require('mongoose');
mongoose
  .connect(config.mongoURI, {
    // useNewUrlParser: true,
    // useUnifiedTopology: true,
    // useCreateIndex: true,
    // useFindAndModify: false,
  })
  .then(() => console.log('MongoDB conected'))
  .catch((err) => {
    console.log(err);
  });
最後に,開発環境のために開発する.jsファイルにはまだ機密情報が含まれています.したがってgitignoreファイルで開発します.jsファイルを入れるとgithubにコードはアップロードされません.
// .gitignore

node_modules

development.js 
John AhnのYouTubeレッスンを通じて勉強し、文章を書いた.😊