【问题标题】:How to encrypt the session cookie in rails 4 [duplicate]如何在rails 4中加密会话cookie [重复]
【发布时间】:2015-12-19 14:50:42
【问题描述】:

假设我在我的应用程序中做了这样的事情:

session[user_id] = 1

根据我看过的视频(参考如下):在rails 4中:

  • 默认情况下会话 cookie 已编码但未加密。含义:由于摘要值,会话 cookie 无法更改。如果精明的用户以某种方式更改了有效负载,那么它将使会话 cookie 无用。

  • 关于会话 cookie 已编码但未加密的事实。即使精明的用户不能成功地修改会话 cookie,精明的用户仍然能够阅读内容。

我知道约定永远不会在 cookie 中存储任何机密信息:无论该 cookie 是常规 cookie 还是会话 cookie。但是,为了增加安全性:如何加密会话 cookie,以使精明的用户根本无法读取其内容?

此外:如何将会话 cookie 的默认行为从默认编码更改为加密?

背景:我完成了 Lynda.com 的“Ruby on Rails 4 基本培训”课程。我观看了“Cookies and Sessions”视频。

还有:relevant rails documentation

【问题讨论】:

    标签: ruby-on-rails ruby cookies session-cookies


    【解决方案1】:

    查看relevant Rails Documentation后,本区给出答案:

    如果您只设置了 secret_token,您的 cookie 将被签名,但不会加密。这意味着用户无法在不知道您应用的密钥的情况下更改其 user_id,但可以轻松读取其 user_id。这是 Rails 3 应用程序的默认设置。

    如果您设置了 secret_key_base,您的 cookie 将被加密。这比签名的 cookie 更进一步,因为加密的 cookie 不能被用户更改或读取。这是从 Rails 4 开始的默认设置。

    secret_key_base 默认位于 rails 4 中:config/secrets.yml。所以实际上:在 Rails 4 中,默认值实际上是加密会话 cookie。

    【讨论】:

    • 我的回答有什么问题???
    • 您的原始答案是“找到答案,将随之更新”——这会吸引反对票。在您自己写好答案之前,请避免发布任何答案。您可以在写答案时对您的问题发表评论。
    • @sjagr 好的。我这样做是为了节省人们写答案的时间,因为我想出了自己问题的答案,并且打算自己发布答案。
    【解决方案2】:

    根据我读到的here

    如果您设置了 secret_key_base,您的 cookie 将被加密。这比签名的 cookie 更进一步,因为加密的 cookie 不能被用户更改或读取。这是从 Rails 4 开始的默认设置。

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 2013-08-22
      • 2015-01-15
      • 2017-05-19
      • 2015-02-26
      • 2023-03-27
      • 1970-01-01
      • 2012-10-31
      • 2010-12-28
      相关资源
      最近更新 更多