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

在教程中早期,我们通过很多工作来哈希我们的密码,以便如果我们的数据库遭到破坏,我们的密码仍然是安全的。但是,通过引入Record_Tokens,数据库违规将产生纯文本记住令牌,使易于锻造的会话。

也许有一些固有的“魔法”(通常似乎是这种情况)到阻止CSRF的轨道,即使有适当的,有效的记住令牌......任何人都可以启发我吗?

有帮助吗?

解决方案

只是通过将会话令牌存储在客户端(在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

其他提示

违反数据库不会产生纯文本记住令牌。
我们只将记住令牌摘要保存到数据库中。这些都像早期的密码一样哈希。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top