gpt4 book ai didi

node.js - MongoDB 和 NodeJS 中的敏感数据分离 - 通过加密 key 引用

转载 作者:可可西里 更新时间:2023-11-01 09:12:29 26 4
gpt4 key购买 nike

我目前正在开发一个允许用户保存敏感日期的应用程序。由于它是一个 Web 应用程序,我们使用 NodeJSMongoDB 来实现持久性。 (顺便说一句,我对 Node 和 NoSQL 完全陌生)

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

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

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

这是一种常见/好的方法还是我做错了什么?有没有更好的方法——我读到 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;
};

};

最佳答案

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

  1. 黑客闯入您的服务器并窃取了整个数据库。运气不好,在这种情况下,加密引用不会有太大帮助,因为黑客也可能获得了 key .即使您完全联合数据,例如到不同的数据中心,并且黑客只获得数据的“匿名”部分,这些医疗记录可能包含姓名、保险和/或其他识别数据。即使没有,也有研究表明几乎不可能对数据进行匿名化(例如:匿名 friend 图、设备配置文件)

  2. 黑客入侵了您的网站并访问了他帐户之外的数据 由于您的服务器必须能够处理取消引用逻辑并且必须能够访问两个数据存储以执行其责任,这种方法根本不会增加安全性。但是,由于您使用的服务器技术对您来说是全新的,因此您的软件中出现安全漏洞的可能性很高...

  3. 磁盘崩溃,您丢失了部分数据或 key 在这种情况下,与从没有加密引用的类似情况中恢复相比,您要做的工作更多。 p>

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

关于node.js - MongoDB 和 NodeJS 中的敏感数据分离 - 通过加密 key 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18083007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com