如何在rails 4中加密会话cookie

时间:2015-09-22 14:47:09

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

让我们说我在我的申请中做了类似的事情:

session[user_id] = 1

根据我观看的视频(参见下文):在rails 4中:

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

  • 关于会话cookie已编码但未加密的事实。即使精明的用户无法成功更改会话cookie,精明的用户仍然可以读取内容。

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

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

背景:我参与了Lynda.com课程“Ruby on Rails 4 Essential Training”。我参加了“Cookies和会话”视频。

另外:relevant rails documentation

2 个答案:

答案 0 :(得分:5)

根据我的阅读here

  

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

答案 1 :(得分:-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。