首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在自定义电子邮件中发送未散列的reset_password_token

在自定义电子邮件中发送未散列的reset_password_token
EN

Stack Overflow用户
提问于 2016-12-19 19:05:49
回答 1查看 379关注 0票数 0

我在Rails 4.2应用程序中使用了Design3.5。我已经重写了所有的股票电子邮件与自定义HTML电子邮件。由于我是如何设计电子邮件传递代码的,电子邮件模板不可能访问令牌的散列版本,比如reset_password_token

我遇到的问题是,电子邮件模板只能访问存储在数据库中的未散列令牌。我尝试使用电子邮件模板中数据库中的未散列令牌,但当用户单击该链接时,Devise的PasswordsController#update调用resource_class.reset_password_by_token(resource_params)。然后,设计:可收回对令牌进行解哈希并尝试查找用户。这会失败,因为未散列的令牌与数据库中的令牌不匹配(因为该令牌已经取消哈希)。

我的问题有三部分:

  1. 在电子邮件(如密码重置电子邮件)中发送未散列令牌的安全含义是什么?
  2. 我想发送未散列的令牌是个坏主意。如果是这样的话,我可以通过重写PasswordsController#create来解决这个问题,这样我就可以拦截散列和未散列的令牌并将两者保存到数据库中,从而使散列令牌对我的邮件代码可用?在尝试这种方法之前,我是否应该意识到安全问题?
  3. 在呈现我的电子邮件模板之前,我是否可以使用未散列的令牌并对其进行散列,以避免麻烦的解决方法,例如将其保存到数据库中?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-19 19:11:26

你的假设是错误的。未散列令牌在电子邮件中发送是安全的,但在DB中存储是不安全的。这是为了使访问您的DB的人不能重建密码重置URL。

因此,您希望电子邮件只能访问未散列令牌。

有关更详细的讨论,请参见http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/上的“在数据库中存储已消化的令牌”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41229344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档