【发布时间】:2011-08-10 16:35:55
【问题描述】:
我正在为我的项目构建一个身份验证系统。 存储会话信息的推荐方法是什么(我只是存储用户的 ID):
- Cookie 商店
- 活动记录存储
此外,使用嵌套表单和accept_nested_attributes_for 有哪些安全问题。
请指教。
非常感谢。
【问题讨论】:
我正在为我的项目构建一个身份验证系统。 存储会话信息的推荐方法是什么(我只是存储用户的 ID):
此外,使用嵌套表单和accept_nested_attributes_for 有哪些安全问题。
请指教。
非常感谢。
【问题讨论】:
使用 CookieStore 时肯定存在安全问题。主要问题是无法在服务器端终止 CookieStore 会话。如果有人可以访问您的 cookie,他可以轻松地以您的身份登录。即使您注销并使用新 cookie 开始新会话。
ActiveRecordStore 至少使您能够通过从数据库中删除会话来使其无效。
这是一篇很好的博客文章。 http://www.bryanrite.com/ruby-on-rails-cookiestore-security-concerns-lifetime-pass/
【讨论】:
Rails 默认使用 cookie 存储,所以这可能是要走的路。一般来说,cookie 存储非常适合高流量网站。您只是不应该在会话中存储任何关键任务的东西(您说您只存储用户 ID,这很好)。
至于使用这些的安全问题......我不认为有太多?查看 railscasts 以获得有关使用它们的精彩教程。唯一想到的可能是使用 attr_accessible 来限制您可以批量分配的内容。如果您需要,CanCan 也是一个很好的授权宝石。
【讨论】:
如果您只存储一个 id,请务必使用 cookie。 AR 会话仍然需要 cookie 中的某种 id 来将请求与会话相关联。
【讨论】: