我在Rails 4.2应用程序中使用了Design3.5。我已经重写了所有的股票电子邮件与自定义HTML电子邮件。由于我是如何设计电子邮件传递代码的,电子邮件模板不可能访问令牌的散列版本,比如reset_password_token
。
我遇到的问题是,电子邮件模板只能访问存储在数据库中的未散列令牌。我尝试使用电子邮件模板中数据库中的未散列令牌,但当用户单击该链接时,Devise的PasswordsController#update
调用resource_class.reset_password_by_token(resource_params)
。然后,设计:可收回对令牌进行解哈希并尝试查找用户。这会失败,因为未散列的令牌与数据库中的令牌不匹配(因为该令牌已经取消哈希)。
我的问题有三部分:
PasswordsController#create
来解决这个问题,这样我就可以拦截散列和未散列的令牌并将两者保存到数据库中,从而使散列令牌对我的邮件代码可用?在尝试这种方法之前,我是否应该意识到安全问题?发布于 2016-12-19 19:11:26
你的假设是错误的。未散列令牌在电子邮件中发送是安全的,但在DB中存储是不安全的。这是为了使访问您的DB的人不能重建密码重置URL。
因此,您希望电子邮件只能访问未散列令牌。
有关更详细的讨论,请参见http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/上的“在数据库中存储已消化的令牌”。
https://stackoverflow.com/questions/41229344
复制相似问题