我应该在数据库中将电子邮件地址保留为纯文本格式吗?


14

每个人都很清楚(我希望),存储密码而至少不加盐/散列是一个糟糕的主意。

电子邮件呢?假设您保留了订阅电子邮件地址,如果您对其进行了正确的加密,则可能无法向用户发送电子邮件。另一方面,如果您不对其进行加密并且数据库被盗,则所有用户都可能面临潜在的垃圾邮件风险。

这个问题不是关于特定法律的问题(尽管可能会给出,但仍然取决于国家/地区),也不是关于加密数据库本身。


认为应该以安全的方式保存所有PII(个人身份信息)。那就是应用程序需要加密的数据(即发送一些验证电子邮件)和用于身份验证的哈希/盐数据(即密码)。另外,在这种情况下,当然必须保护数据库。
Ilan Huberman

您可以设置一个单独的应用程序,例如仅存储电子邮件+密码(+其他私人数据)。您可以通过调用它来发送电子邮件,例如,使用内部rest api:localEmailServer / sendInvite / 123,其中123 =用户ID。您可以对登录进行相同的操作,然后将其发布到localEmailServer / login上,该方法可以返回true或false。这样,您的应用程序可能会被黑客入侵,但仍然没有电子邮件地址。如果将请求的数量限制为该服务,则将受到更多保护,因为您不容易受到此部分中的SQL注入之类的攻击。
Luc Franken

Answers:


9

如果保留这些记录仅用于帐户确认/身份验证,则可以选择存储电子邮件地址的盐化哈希。

在其他情况下,在我看来,对电子邮件进行加密将使维护数据库的工作更加困难,而获得的回报却很少。

最好保护数据库本身的访问权限是一个更好的选择:通常,数据库中还有许多您不希望收集的其他信息。


关于Stackoverflow的类似问题:是否值得加密数据库中的电子邮件地址?


没有看到这个问题!记录下来,这是一个古老的问题,但我认为它现在应该属于程序员。
Pierre Arlaud 2015年

3
@PierreArlaud:实际上,整个事情要比信息安全更好,因为它实际上与编程无关。
Blrfl 2015年

确实有加密电子邮件的回报。如果您不将密钥存储在同一个受到破坏的数据库中,则会使坏人无法使用电子邮件。请记住,电子邮件经常用于激活帐户和更改凭据。
NoChance

2

我认为您已经说完了。

我唯一能想到的就是不要使用像SHA1这样的单向哈希过滤器来存储电子邮件地址。在您的应用程序中使用一些(可逆)公共密钥加密,并确保您的私有密钥离数据库不远,以免它们被“偷”在一起。

这样,您仍然可以解密电子邮件地址以发送电子邮件,


6
和?和?悬念正在杀死我:)
皮埃尔·阿劳德

那又怎样 什么是悬念?在将应用程序存储到数据库之前,先对其应用程序进行加密(可解密),这意味着如果数据库被盗,被黑客入侵等,您无需担心。但是,当您要发送电子邮件时,可以从数据库中解密电子邮件收件人。这不是您想要的?我想念什么吗?
Mawg说恢复Monica

2
只需评论您回答的最后一个字符即可:D
Pierre Arlaud,2015年

我正在尝试查找您的答案说的manlio没有。基本上,该想法是使电子邮件具有可逆哈希,例如加盐哈希。也许您的想法完全不同?
皮埃尔·阿洛德

抱歉,我想我们几乎同时提交了。
Mawg说恢复Monica 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.