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