2011-08-10 49 views
7

我正在为我的项目构建身份验证系统。 什么是推荐的方式来保存会话信息(我只是存储用户的ID没有别的):Rails - 会话的Cookies或Active Record Store

  • cookie存储
  • 活动记录商店

此外,什么是对安全问题使用嵌套窗体和accepted_nested_attributes_for。

请指教。

非常感谢。

回答

4

Rails默认为cookie存储,所以这可能是最好的选择。一般来说,Cookie商店尤其适用于高流量的网站。你不应该在会话中存储任何关键任务(你说你只是存储用户ID很棒)。

至于使用这些的安全问题...我不认为有太多?查看railscast以获取有关使用这些教程的精彩教程。唯一想到的可能是使用attr_accessible来限制你可以批量分配的东西。如果您需要,CanCan也是授权的绝佳选择。

+0

对于在此搜索的任何人,无论您使用哪个会话存储,都会涉及一个cookie。区别只在于cookie是否包含会话本身,或者是否仅包含将其与存储在数据库中的会话相关联的不透明标识符。在任何一种情况下,如果担心安全问题,则应将这些cookie中的任何一种标记为“安全”,以排除通过非安全连接进行传输的可能性 - 这将使人容易遭受会话劫持。 –

+0

如果默认使用cookie,这并不意味着它们是安全的。他们更快,不污染分贝,但不安全。 – sekrett

0

如果您只存储一个ID,绝对使用Cookie。 AR会话仍然需要cookie中的某种id来将请求与会话相关联。

6

使用CookieStore时肯定存在安全问题。主要问题是CookieStore会话不能在服务器端被终止。如果有人可以访问您的cookies,他可以轻松登录。即使您使用新的cookie登出并开始新的会话。

ActiveRecordStore至少使您能够通过从数据库中删除会话来使会话失效。

这是一篇很好的博客文章。 http://www.bryanrite.com/ruby-on-rails-cookiestore-security-concerns-lifetime-pass/

+0

优秀点。 –