秘密情報の保護[NODE.JS]
4022 ワード
NodeとMongoDBが接続された日に戻りましょう.2人の子供を接続するには、MongoDBから発行された鍵と自分で設定したパスワードを入れる必要があります.<パスワード!>こちらです.
このコードをgithubにアップロードしたらどうなりますか?誰もが私のMongoDBパスワードを知っています.したがって,外部に露出すべきでないコードがあれば,良好な隠蔽方法が必要である.
ルートディレクトリにconfigというフォルダを作成し、開発します.js, key.js, production.jsの3種類のファイルが生成されました.
development.jsファイルは、開発環境の機密情報を作成し、生成します.jsファイルは、導入環境の機密情報を記述します.鍵もあります.jsファイルでは、現在どの環境にあるかを理解し、環境に適したコードに分割します.
では、次に隠したいURIを抽出します.もちろん、実際のコードでは<パスワード!!>ここには実際のパスワードがあるはずです.
モジュールは他のファイルで使用できます.exportで包むと、変数mongouRIに隠したい情報が入ります.
開発環境とは異なり、導入環境は実際の導入後も機密情報を使用する必要があるため、MONGO URI変数に隠したいコードをHerokuというサイトに追加しました.私はまだ配備段階ではなく、本格的なHerokuサイトを使っていないので、コードだけを書いてくれました.(Web環境では、環境変数を使用して開発、テスト、導入環境に基づいてファイルを作成し、情報を非表示にすることもありますが、サイトを単独で使用するわけではありません.そのため、このセクションでさらに説明したいと思います.)
process.env.NODE ENVは環境変数であり、実際にサーバを実行すると、導入環境の製品であれば開発環境の製品を確認できます.それを利用して、次のように空気を入れます.(process.env.NODE ENVを撮影するとundefinedが表示されるため、ブランチはelseに移動し、開発環境コードを使用します.)
./config/keyをrequireにインポートした後、元のURIがある場所に入れます.key.jsファイルはオブジェクト{}をエクスポートしていますが、実際に使用したいのはそのオブジェクトのmongouRIなのでconfigです.mongouRIにインポートすればいいです
このコードを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レッスンを通じて勉強し、文章を書いた.😊Reference
この問題について(秘密情報の保護[NODE.JS]), 我々は、より多くの情報をここで見つけました https://velog.io/@dev_cecy/NODE.JS-비밀-정보-보호하기-FEAT.-PROCESS.ENV.NODEENV-.GITIGNOREテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol