设计 - 加密登录电子邮件

时间:2012-01-29 03:48:00

标签: ruby-on-rails-3 devise

您知道Devise是否提供了将电子邮件存储在数据库中的功能吗?

如果是这种情况,使用此功能有什么缺点?

我能想到的两个是:

  • 显然不可能在编辑“屏幕”上看到电子邮件([理论]除了使用对称加密而不是标准加密存储电子邮件的情况除外)。

  • 如果盐(出于任何原因)受到损害并且需要更改,那么计划恢复策略将是一项艰巨的任务(而不是仅仅强制用户在下次登录时更改密码)。但是,我认为这是可行的。

感谢,

1 个答案:

答案 0 :(得分:0)

还没有完全回答这个问题,但我想提出一点,你不想散列登录值。也许是对称加密。咸呢?否。

为什么不呢?您的登录系统必须为尝试登录的人找到正确的记录。这意味着您必须对该值进行散列/加密并与其他散列/加密值进行比较。盐会一次性消除这样做的机会,而且每次都必须运行一次表扫描。此外,除了保证两个人的登录没有哈希冲突的可能性之外你什么都没有。

在整个应用中使用单一盐会杀死盐的全部目的,因此没有理由使用盐。但是,如果您希望这样做,那么它就解决了比较问题。

但是你仍然遇到可能发生碰撞的问题。概率很低但非零,随着你获得更多用户,生日效应会发挥作用,你可能会遇到问题。