我正在寻找一种方法来加密整个数据库并保持搜索数据的能力,尽管它是加密的。
我在 Mongo 中看到了很多关于静态数据加密的问题,但没有一个答案可以帮助他们完成应用程序的完整流程。我希望在这里展示我的发现并获得反馈和更多想法(我还有一些问题)。
加密选项:
1.猫鼬加密。完整的解决方案!可以用最少的工作为您加密所有数据库!
2. Procona mongodb - 我没有机会测试它,我花了好几个小时试图安装并让它运行,但没有运气(这可能只是我自己..)。
3. 在模块级别创建 get 和 send 方法来加密和解密您的数据。
我对静态数据加密的要求是:
- 应用层不需要参与加密解密过程。应该就像我们甚至没有加密数据(大部分)。
- 我们可以对加密数据执行搜索和查找。
- 我不知道该怎么做,但希望在加密文本字段中搜索部分单词和短语。
- 当然,除了对象 ID,所有数据都是加密的。
我的方法:
我想尝试使用 mongoose-encryption 来利用这个神奇插件的所有好处。
我还想将加密字段中真实值的哈希添加到架构中,以便我可以对加密字段执行查找操作。
问题:在 mongoose-encryptions 隐藏它之前,我似乎无法找到正确的 mongoose Hook 来处理未加密的数据。所以我无法生成我的哈希。
这不起作用:
Users.pre('save', () => {
this.hashedName = hash(this.name)
console.log(":(")
});
同样如上所述,在加密数据中搜索部分和短语。使用我的方法,我们可以找到名为“Danielle”的人,但我们无法在 Hash 中搜索名称以“Dani”开头的用户。
请给我您的意见以及我的方法。我知道这是一个不容易找到解决方案的话题。