我正在创建一个用户将使用OpenID登录的网站。 不过,我只会给他们谷歌,雅虎和美国在线的选择。 他们将使用其OpenID提供商登录或注册'帐户(谷歌/雅虎/美国在线),在重定向到我的网站后,我会向他们展示"注册成功!",同时,我将存储他们的电子邮件ID与其声称的ID或Google等在OpenID AX中提供的内容(属性交换)。
现在,由于网站上的一些活动,如评论,查询等,我希望通知用户。为此,我要将邮件发送到他的电子邮件帐户,我可以从他的OpenID注册中获取我的网站。 我将需要电子邮件ID以明文(显然),向他们发送邮件。但是在数据库中,我希望安全地存储电子邮件ID,足够安全,以便即使有人黑客攻击并下载用户表,他们也无法破译电子邮件ID。
怎么做?对于AES加密等,我需要存储密钥。如果后端脚本可以轻松访问密钥以将电子邮件ID转换为纯文本,那么黑客也可以吗?
我只是想安全地存储我网站注册用户的电子邮件ID,并向他们发送有关通知的电子邮件,但不会冒黑客可以轻松访问他们的电子邮件ID的风险。
答案 0 :(得分:0)
如你所述,绝对安全是不可能的。如果您可以阅读服务器上的电子邮件地址(或任何其他数据),潜在的攻击者也可以。研究服务器和数据库的安全性,以便将成功攻击的可能性降到最低。
Paranoid版本是将电子邮件数据库带到另一个物理上分离的专用数据库服务器。存储在那里的唯一数据应该是user_id-email对。不要在此服务器上运行任何其他服务。不允许直接访问数据 - 而是使用两种方法将其隐藏在API(可能是存储过程)之后:
同样,这永远不会100%安全,但只是提供另一层防御。