database - 在我的数据库中存储私有(private)电子邮件地址

标签 database security privacy

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

当用户在我的网站上创建帐户时,他们会获得 ID、用户、密码和电子邮件地址数据。对于密码,我对其进行哈希处理,这样如果有人入侵我的网站,他们就看不到真正的密码。但是,保存一堆未 protected 电子邮件地址(如用户)难道不会带来安全风险吗?

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

谢谢。

最佳答案

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

密码应该受到保护(最好使用 bcrypt ),因为如果 Alice 在 Bob's Things 上使用的密码与她在 Gmail 上使用的密码相同,那么任何获得 Bob's Things 数据库访问权限的攻击者都将无法访问Alice 的电子邮件帐户(也包括定期购买 Bob 的东西并重复使用密码的其他 10,000 个用户的电子邮件帐户)。

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

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

您最好确保此数据库的接口(interface)(即您的应用程序和支持基础设施)得到适当的保护,而不是尝试加密数据库中的电子邮件地址。即使它们被加密, key 管理也会成为问题。最重要的是,您能做的最好的事情就是保护您的应用程序免受 user enumeration 的影响。如果您想保护人们的电子邮件地址不被轻易发现。

关于database - 在我的数据库中存储私有(private)电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38755747/

相关文章:

java - 在 Oracle JDBC 客户端中指定密码哈希而不是清除密码

c# - 盐长度与总哈希长度之比

mysql - 如何使sqlite in-memory db join查询和MySQL一样快

php - URL + html实体?怎么想这个?

node.js - 构建具有多个数据库支持的 Node.js REST API 应用程序的最佳实践是什么?

security - 通过 GTM 使用 GA 时,如何从 URL 中清除 PII?

java - 内部应用程序相机照片不正确地保存到图库

atlassian-sourcetree - GitKraken 和 SourceTree,代码隐私?

php - 选择不同的月份和年份,然后分割值

sql - 连接表 : Only (! ) 添加缺失的行