让我们说我在我的申请中做了类似的事情:
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和会话”视频。
答案 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。