email - 在数据库中存储用户电子邮件地址的最佳和最安全的方法是什么?

标签 email encryption security

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

5年前关闭。




Improve this question




出于安全原因,是否值得在将用户电子邮件放入数据库之前对其进行加密?

我知道我们对密码进行哈希和加盐,但这是另一回事,因为我们并不真正需要密码原件。使用电子邮件则不同。

知道解密 key 无论如何都会靠近数据库,加密电子邮件有意义吗?我想如果有人进入系统,他们也会找到 key ,如果不是立即那么最终。

什么是最佳实践?如果我运行自己的服务器而不是共享/虚拟主机,还有其他可用的选择吗?

编辑:我打算使用 SQL Server。不,它不是具有安全要求的公司软件,只是我想到的一些娱乐网站。

最佳答案

如果您将来需要电子邮件地址,则必须以纯文本形式存储它们。

当然,您可以加密它们,但是,在这种情况下,这是通过默默无闻而有效的安全性。基本上,如果您的应用程序的边界是安全的,那么其中的数据可以是纯文本。此处加密会增加您处理数据的复杂性,但并不能真正阻止攻击者获取您的原始数据。

正如您所说,如果他突破了您的外围防御,他很可能会轻松获得您的解密 key 来解密电子邮件数据。加密可能会稍微减慢确定的攻击者的速度,但不会为您的数据增加任何真正的安全性。

最好的方案是散列电子邮件地址(用盐!)并存储它。这允许您根据输入值(例如)检查电子邮件地址并验证输入的电子邮件地址与您存储的内容相同,当然,这样做的主要缺点是您无法知道电子邮件是什么address 没有额外的值(value),因此如果您想(例如)定期向您的用户发送电子邮件,那么您将不走运。

我怀疑您正在存储电子邮件地址,因为它是有用的数据,并且您会想要用它做一些事情(例如发送电子邮件:) 在这种情况下,加密只会增加处理该数据的开销,而获得的返回却很少.

在这种情况下,我将专注于保护对数据库本身的访问(即您的“外围”防御)并确保它们尽可能强大,同时将数据以纯文本形式保留在数据库中。

关于email - 在数据库中存储用户电子邮件地址的最佳和最安全的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767276/

相关文章:

javascript - 使用 css 在 gmail 中更改为自定义光标

javascript - php mcrypt 到 javascript aes 集成

security - 使用Spring Security Rest插件保护Grails Rest Api

java - 如何通过 JAVA 发送包含动态链接的 HTML 电子邮件

java - 对使用 java 在电子邮件中显示图像有疑问吗?

excel - 将图表从 Excel 粘贴到 Outlook 电子邮件中

c# - 未调用从 AuthorizeAttribute 覆盖 AuthorizeCore

c# - 使用 Entity Framework 的加密列

ssl - TLS、 header 和代理 : how to answer the client?

security - 过期的 SSL 证书和加密