我们可以使用 spiped 或 stunnel 保护数据。但是,我们如何在静止数据的同时做到这一点?如果有人拿走了整个数据库怎么办?我们如何加密持久数据存储?我们是否需要在应用层中执行此操作?
答案 0 :(得分:2)
查看https://redis.io/topics/security处的文档时,显然不支持对静态数据进行加密:
Redis旨在由受信任环境中的受信任客户端访问。这意味着通常不会将Redis实例直接暴露给Internet,或者通常是不受信任的客户端可以直接访问Redis TCP端口或UNIX套接字的环境。
并且(强调我的):
[...]一般而言,对Redis的不受信任访问应始终由实现ACL的层,验证用户输入以及决定对Redis实例执行哪些操作来调解。 一般而言,Redis并未针对最高安全性进行优化,而是为了获得最佳性能和简单性。
答案 1 :(得分:-1)
我要做的是将数据库设置为某种互联网无法访问的私人服务器。您可以通过私有IP地址与之通信。
Amazon Web Services为虚拟私有云提供了一个非常好的架构,您可以尝试使用它们的免费套餐。 (使用t2.micro实例并确保它们的总运行时间不超过30天,并且它们不会消耗超过30Gb的存储容量)
关于如何在黑客实际访问数据库的情况下保护数据:我将使用单向散列算法加密我将来要检查的所有敏感信息。每种编程语言都有自己的SHA256语法和其他几种加密算法。我相信对于Node.js你可以使用加密模块(不确定它是否有单向散列,但它应该。)
因此,每次用户发送内容时,您都可以对其进行散列并将其与数据库加密数据进行比较。
例如对于电子邮件的情况,它可以是双向散列,这样可以在之后检索。
此时,即使有些人访问了数据库,也会得到无关的信息。