4

私は現在、ユーザーが重要な日付を保存できるようにするアプリケーションに取り組んでいます。これは、永続化のために使用NodeJSしている Web アプリケーションであるためです。MongoDB(ところで、私はNodeとNoSQLをまったく初めて使用します)

ある種の病歴を保存できるユーザーがいます。名前と電子メールはユーザー ドキュメント内に保存され、その他のものはプロファイル内に保存されます。セキュリティを向上させるためにencrypt、ユーザーからプロファイルへの参照、およびその逆の参照を希望します。

現時点では、のCryptoライブラリを使用して、ユーザー プロファイル内の参照NodeJSを暗号化 (AES256) しています。user_id結果として、参照はもはや ObjectID の型ではなく、文字列です

そのため、データベースを直接表示しても、どのプロファイルがどのユーザーに属しているかを確認することはできません。秘密鍵encryptdecryptユーザー 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;
    }; 

};

4

2 に答える 2