关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
5年前关闭。
Improve this question
出于安全原因,是否值得在将用户电子邮件放入数据库之前对其进行加密?
我知道我们对密码进行哈希和加盐,但这是另一回事,因为我们并不真正需要密码原件。使用电子邮件则不同。
知道解密 key 无论如何都会靠近数据库,加密电子邮件有意义吗?我想如果有人进入系统,他们也会找到 key ,如果不是立即那么最终。
什么是最佳实践?如果我运行自己的服务器而不是共享/虚拟主机,还有其他可用的选择吗?
编辑:我打算使用 SQL Server。不,它不是具有安全要求的公司软件,只是我想到的一些娱乐网站。
最佳答案
如果您将来需要电子邮件地址,则必须以纯文本形式存储它们。
当然,您可以加密它们,但是,在这种情况下,这是通过默默无闻而有效的安全性。基本上,如果您的应用程序的边界是安全的,那么其中的数据可以是纯文本。此处加密会增加您处理数据的复杂性,但并不能真正阻止攻击者获取您的原始数据。
正如您所说,如果他突破了您的外围防御,他很可能会轻松获得您的解密 key 来解密电子邮件数据。加密可能会稍微减慢确定的攻击者的速度,但不会为您的数据增加任何真正的安全性。
最好的方案是散列电子邮件地址(用盐!)并存储它。这允许您根据输入值(例如)检查电子邮件地址并验证输入的电子邮件地址与您存储的内容相同,当然,这样做的主要缺点是您无法知道电子邮件是什么address 没有额外的值(value),因此如果您想(例如)定期向您的用户发送电子邮件,那么您将不走运。
我怀疑您正在存储电子邮件地址,因为它是有用的数据,并且您会想要用它做一些事情(例如发送电子邮件:) 在这种情况下,加密只会增加处理该数据的开销,而获得的返回却很少.
在这种情况下,我将专注于保护对数据库本身的访问(即您的“外围”防御)并确保它们尽可能强大,同时将数据以纯文本形式保留在数据库中。
关于email - 在数据库中存储用户电子邮件地址的最佳和最安全的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767276/