0

在 Rails 教程的第 8 章中,Michael Hartl 介绍了“记住令牌”的概念,以便即使在浏览器关闭后也能记住会话。他提到一个会话由一个指向用户的记忆令牌组成,这个记忆令牌存储在一个用户对象中。

在本教程的前面部分,我们进行了大量工作来对密码进行哈希处理,这样如果我们的数据库遭到破坏,我们的密码仍然是安全的。然而,随着 remember_tokens 的引入,数据库泄露将产生一个纯文本的记忆令牌,从而使会话易于伪造。

也许有一些固有的“魔法”(通常似乎是这种情况),即使使用适当、有效的记忆令牌也会阻止 CSRF ......有人能启发我吗?

4

2 回答 2

0

破坏数据库不会产生纯文本记忆令牌。
我们只将记住令牌摘要保存到数据库中。这些就像早期的密码一样被散列。

于 2014-11-26T01:25:18.507 回答
0

只需将会话令牌存储在客户端(在 cookie 中),您就容易受到 CSRF 攻击。为了使您的应用程序对 Rails 中的此类攻击安全,您有一个助手,它在页面中添加一个 CSRF 令牌

<%= csrf_meta_tags %>

和一个过滤器(protect_from_forgery)

  class FooController < ApplicationController
    protect_from_forgery :except => :index

有关 Rails 安全性的更多信息,请访问: http: //guides.rubyonrails.org/security.html

于 2012-03-09T22:05:10.423 回答