【问题标题】:Storing email-id securely on website's backend将电子邮件 ID 安全地存储在网站的后端
【发布时间】:2013-08-22 06:39:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: security email openid database-security securestring


    【解决方案1】:

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

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

    • store_email (user_id, email)
    • send_message(用户 ID、主题、消息)

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

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 2018-05-15
      • 2015-03-02
      • 2012-10-19
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多