私は現在、ユーザーが重要な日付を保存できるようにするアプリケーションに取り組んでいます。これは、永続化のために使用NodeJS
している Web アプリケーションであるためです。MongoDB
(ところで、私はNodeとNoSQLをまったく初めて使用します)
ある種の病歴を保存できるユーザーがいます。名前と電子メールはユーザー ドキュメント内に保存され、その他のものはプロファイル内に保存されます。セキュリティを向上させるためにencrypt
、ユーザーからプロファイルへの参照、およびその逆の参照を希望します。
現時点では、のCrypto
ライブラリを使用して、ユーザー プロファイル内の参照NodeJS
を暗号化 (AES256) しています。user_id
結果として、参照はもはや ObjectID の型ではなく、文字列です
そのため、データベースを直接表示しても、どのプロファイルがどのユーザーに属しているかを確認することはできません。秘密鍵encrypt
とdecrypt
ユーザー ID は、サーバーの js ファイルのどこかに保存されNodeJS
ます。
これは一般的/良い方法ですか、それとも私は何か完全に間違っていますか? より良い方法はありますか – mongoDB は「組み込みの暗号化」をサポートしていないことを読みました
少なくとも、ここに暗号化/復号化のコードがあります
module.exports = function() {
this.encryptionSecret = "ANYSECRET";
this.crypto = require('crypto');
this.algorithm = 'aes256';
this.encrypt = function (key) {
var cipher = this.crypto.createCipher(this.algorithm, this.encryptionSecret);
var encrypted = cipher.update(""+key, 'utf8', 'hex') + cipher.final('hex');
return encrypted;
};
this.decrypt = function (encryptedKey) {
var decipher = this.crypto.createDecipher(this.algorithm, this.encryptionSecret);
var decrypted = decipher.update(encryptedKey, 'hex', 'utf8') + decipher.final('utf8');
return decrypted;
};
};