【问题标题】:Rails - Cookies or Active Record Store for SessionsRails - 用于会话的 Cookie 或 Active Record 存储
【发布时间】:2011-08-10 16:35:55
【问题描述】:

我正在为我的项目构建一个身份验证系统。 存储会话信息的推荐方法是什么(我只是存储用户的 ID):

  • Cookie 商店
  • 活动记录存储

此外,使用嵌套表单和accept_nested_attributes_for 有哪些安全问题。

请指教。

非常感谢。

【问题讨论】:

    标签: ruby-on-rails security


    【解决方案1】:

    使用 CookieStore 时肯定存在安全问题。主要问题是无法在服务器端终止 CookieStore 会话。如果有人可以访问您的 cookie,他可以轻松地以您的身份登录。即使您注销并使用新 cookie 开始新会话。

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

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

    【讨论】:

      【解决方案2】:

      Rails 默认使用 cookie 存储,所以这可能是要走的路。一般来说,cookie 存储非常适合高流量网站。您只是不应该在会话中存储任何关键任务的东西(您说您只存储用户 ID,这很好)。

      至于使用这些的安全问题......我不认为有太多?查看 railscasts 以获得有关使用它们的精彩教程。唯一想到的可能是使用 attr_accessible 来限制您可以批量分配的内容。如果您需要,CanCan 也是一个很好的授权宝石。

      【讨论】:

      • 对于任何搜索此内容的人,无论您使用哪个会话存储,都涉及到 cookie。区别仅在于 cookie 是否包含会话本身,或者它是否仅包含一个不透明的标识符,该标识符将其与存储在数据库中的会话相关联。在任何一种情况下,如果需要考虑安全性,则应将这些类型的 cookie 中的任何一种标记为“安全”,以排除通过非安全连接进行传输的可能性——这会使一个人容易受到会话劫持的影响。跨度>
      • 如果默认使用cookies,并不意味着它们是安全的。它们速度更快,不会污染数据库,但不安全。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 2017-07-02
        • 1970-01-01
        • 2014-10-14
        相关资源
        最近更新 更多