微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – MongoDB和NodeJS中的敏感数据分离 – 通过加密密钥进行引用

我目前正在开发一个允许用户保存敏感日期的应用程序.由于它是一个Web应用程序,我们使用NodeJS和MongoDB来实现持久性. (顺便说一句,我是Node和Nosql的新手)

我们确实有用户可以存储某种病史.名称和电子邮件存储在用户文档中,而其他内容存储在配置文件中.
为了提高安全性,我想加密用户对他的个人资料的引用,反之亦然.

目前我正在使用NodeJS的Crypto库来加密(AES256)用户配置文件中的user_id引用.因此,引用不再是ObjectID的类型,而是字符串

因此,通过直接查看数据库,无法检查哪个配置文件属于哪个用户.加密和解密用户id的密钥存储在NodeJS服务器的js文件中.

这是一种常见/好的方式还是我做错了什么?有没有更好的方法 – 我读到mongoDB不支持任何“内置加密”

至少,这是en / decryption的代码

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;
    };

};

解决方法

让我们来看看你面临的风险:

>黑客闯入您的服务器并窃取整个数据库.运气不好,在这种情况下,加密的引用也无济于事,因为黑客也可能获得了密钥的访问权限.即使您完全联合数据,例如对于不同的数据中心,黑客只获取数据的“匿名”部分,这些医疗记录可能包含姓名,保险和/或其他识别数据.即使没有,也有研究表明,几乎不可能对数据进行匿名化(例如:匿名的朋友图,设备配置文件)
>黑客攻击您的站点并访问其帐户外的数据由于您的服务器必须能够处理取消引用逻辑并且必须能够访问两个数据存储以执行其职责,因此该方法根本不会增加安全性.但是,由于您使用的服务器技术对您来说是全新的,因此在您的软件中出现安全漏洞的可能性很高……
>磁盘崩溃并丢失部分数据或密钥在这种情况下,除了从没有加密引用的类似方案中恢复之外,还有更多工作要做.

使Web应用程序安全可归结为一半的可能性:通过使用安全编码标准,渗透测试,入侵防御,双因素身份验证等等,使系统本身尽可能健壮,和/或使用客户端加密.后者看起来像是终极武器,但却充满了自己的危险.我担心没有银弹[我能想到].

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐