更改rails secret_key_base对生产有什么影响?

时间:2019-06-20 00:54:07

标签: ruby-on-rails ruby-on-rails-5

据我所知,secret_key_base仅用于签名cookie,而更改secret_key_base将导致现有的cookie无效。我需要在生产中更改secret_key_base,让现有用户注销是可以接受的行为,但我担心可能会有其他副作用。旧Cookie下次访问该网站时会被简单地删除/替换吗,还是会四处闲逛并引起问题?除了用户注销外,还会发生其他变化吗?

2 个答案:

答案 0 :(得分:1)

  

Rails框架中的三个核心功能使用了该应用程序的key_generator以及secret_key_base:

     

1可以通过cookies.encrypted访问的加密cookie的派生密钥。

     

2派生可通过cookies.signed访问的HMAC签名cookie的密钥。

     

3个所有应用程序命名的message_verifier实例的派生密钥。

您可以在https://medium.com/@michaeljcoyne/understanding-the-secret-key-base-in-ruby-on-rails-ce2f6f9968a1

阅读更多内容

通过更改secret_key_base对产品产生的应用程序影响将取决于您的应用程序所依赖的cookie数量。我想说,您的所有客户都必须在1次之后重新生成其cookie,然后它才能恢复正常。

答案 1 :(得分:0)

secret_key_base可以循环升级,而对用户没有影响。 I have found a tutorial on how to do this here.

这似乎可行,并且在学习本教程之后,我能够为每个调度程序安装一个自动定期更新secret_key_base,并具有可配置的时间跨度。仅当用户保持不活动状态的时间超过该时间段(例如3个月)时,他们的会话才会变为无效。

这适用于保护会话cookie的标准rails功能。如果您的应用程序使用secret_key_base做其他事情,那么您还必须在那里处理各自的旋转。