改变Rails的secret_key_base对生产环境有什么影响?

5
据我所知,secret_key_base 只用于签名 cookie,更改 secret_key_base 会使现有的 cookie 失效。我需要在生产环境中更改 secret_key_base,让现有用户被登出是可以接受的行为,但我担心可能会造成其他副作用。当他们下次访问网站时,旧的 cookie 是否会被简单地删除/替换或者会一直存在并导致问题?除了用户被注销之外,是否还会发生其他变化?请注意保留 HTML 标记。
2个回答

3
该应用程序的 key_generator 和 secret_key_base 在 Rails 框架内用于三个核心功能:
1. 派生加密 cookie 的密钥,这些 cookie 可通过 cookies.encrypted 访问。 2. 派生 HMAC 签名 cookie 的密钥,这些 cookie 可通过 cookies.signed 访问。 3. 派生应用程序所有命名 message_verifier 实例的密钥。
您可以在以下链接中了解更多信息:https://medium.com/@michaeljcoyne/understanding-the-secret-key-base-in-ruby-on-rails-ce2f6f9968a1 在生产环境中更改 secret_key_base 对应用程序的影响将取决于应用程序依赖的 cookie 数量。我认为,在更改后,所有客户端都需要重新生成其 cookie 一次,之后应该恢复正常。

0

secret_key_base可以通过轮换方式进行升级,不会对用户产生影响。 我在这里找到了一个关于如何实现此操作的教程。

这个方法似乎可行,按照教程,我能够安装自动定期更新密钥库的计划任务,并设置可配置的时间间隔。仅当用户长时间处于非活动状态(例如3个月),其会话才会失效。

这适用于保护会话cookie的标准rails功能。如果您的应用程序还使用secret_key_base进行其他操作,则还需要在相应的位置进行轮换处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接