Database 在我的数据库中存储私人电子邮件地址

Database 在我的数据库中存储私人电子邮件地址,database,security,privacy,Database,Security,Privacy,我的问题不是我不能将电子邮件保存到数据库。任何人都能做到。我的问题是: 当用户在我的网站上创建帐户时,他们会获得ID、用户、密码和电子邮件地址数据。对于密码,我将其散列,这样如果有人入侵我的网站,他们就看不到真正的密码。然而,保存大量未受保护的电子邮件地址(如用户)难道不是一种安全风险吗 我以前从未创建过登录系统网站,我想知道是否其他人只是将电子邮件地址保留在数据库中而不受保护。(换句话说,仅仅将电子邮件地址按原样保存到数据库中是否很常见?) 谢谢。一般来说: 1-永远不要将用户的信用卡号保存在

我的问题不是我不能将电子邮件保存到数据库。任何人都能做到。我的问题是:

当用户在我的网站上创建帐户时,他们会获得ID、用户、密码和电子邮件地址数据。对于密码,我将其散列,这样如果有人入侵我的网站,他们就看不到真正的密码。然而,保存大量未受保护的电子邮件地址(如用户)难道不是一种安全风险吗

我以前从未创建过登录系统网站,我想知道是否其他人只是将电子邮件地址保留在数据库中而不受保护。(换句话说,仅仅将电子邮件地址按原样保存到数据库中是否很常见?)

谢谢。

一般来说:

1-永远不要将用户的信用卡号保存在数据库中的任何位置,但是如果您确实想保存,您可以保存其中的一部分

2-始终使用salt和hash用户的passowrd


3-无需加密用户的电子邮件,如果您真的担心,请加密它,而不是散列它

用户名和电子邮件地址与密码的敏感度不同

密码应该是安全的(希望有),因为若Alice在Bob的物品上使用了和Gmail相同的密码,那个么任何访问Bob物品数据库的攻击者都将无法访问Alice的电子邮件帐户(也不能访问经常购买Bob物品并重复使用密码的其他10000名用户)

电子邮件地址通常不能像密码一样散列。如果您的系统需要向用户发送电子邮件,则如果电子邮件以散列形式存储,则无法执行此操作

此外,攻击者仅凭电子邮件地址就可以做的事情更少。是的,他们可以向您的用户发送网络钓鱼电子邮件,或者他们可以尝试猜测密码以获得对帐户的访问权限,但是,保护有关服务器端存储的电子邮件地址的复杂性通常是不值得的


您最好确保此数据库的接口(即您的应用程序和支持基础架构)得到适当的保护,而不是尝试加密数据库中的电子邮件地址。即使它们被加密,密钥管理也会成为问题。总之,如果您想保护人们的电子邮件地址不被轻易发现,您所能做的就是保护您的应用程序免受攻击。

这是很常见的,是的。电子邮件地址并不是真正的安全风险(除非用户也将其用作密码,但这对他们来说是个坏主意)。如果您愿意,您可以对其进行加密,这将为您的用户增加一点隐私。但它必须是可解密的,这样你才能使用它。显然,它们应该被加密。@David;不是电子邮件地址。对不起,我的错,我指的是电子邮件地址。即使对用户密码进行盐析和散列,也可能存在重复,但这还不够,散列必须进行迭代,以便需要大量时间来强制执行密码。有关详细信息,请参阅我对问题的评论,另请参阅关于Security Stackexchange和OWASP(开放式Web应用程序安全项目)。