1

我正在创建一个用户将使用 OpenID 登录的网站。不过,我只会让他们选择 Google、Yahoo 和 AOL。他们将使用他们的 OpenID 提供商的帐户(Google/Yahoo/AOL)登录或注册,在他们被重定向回我的网站后,我会告诉他们“注册成功!”同时,我会将他们的电子邮件 ID 与他们声明的 ID 或 Google 等在 OpenID AX(属性交换)中提供的任何内容存储起来。

现在,由于网站上的一些活动,如评论、查询等,我希望通知用户。为此,我会向他的电子邮件帐户发送邮件,我将从他的 OpenID 注册中获得我的网站。而且我将需要电子邮件 ID 为纯文本(显然),以便向他们发送邮件。但是在数据库中,我想安全地存储电子邮件 ID,足够安全,这样即使有人破解并下载了用户表,他们也无法破译电子邮件 ID。

怎么做?对于 AES 加密等,我需要存储一个密钥。如果后端脚本可以轻松访问将电子邮件 ID 转换为明文的密钥,那么黑客也不能吗?

我只想安全地存储我网站注册用户的电子邮件 ID,并通过电子邮件向他们发送有关通知的信息,但又不会冒着黑客轻松访问他们的电子邮件 ID 的风险。

4

1 回答 1

0

正如您所描述的,绝对安全是不可能的。如果您可以读取服务器上的电子邮件地址(或任何其他数据),潜在的攻击者也可以。致力于服务器和数据库安全,以将成功攻击的可能性降至最低。

Paranoid 版本是将电子邮件数据库转移到不同的、物理上分离的、专用的数据库服务器。唯一存储在那里的数据应该是 user_id-email 对。不要在此服务器上运行任何其他服务。不允许直接访问数据 - 相反,使用两种方法将其隐藏在 API(可能是存储过程)后面:

  • store_email (user_id, 电子邮件)
  • send_message (user_id, 主题, 消息)

同样,这永远不会是 100% 安全的,而只是提供了另一层防御。

于 2013-11-10T19:57:46.430 回答