rails: 泄露的后果是什么 secret_key_base

rails: What are the consequences of a leaked secret_key_base

在rails中我们在config/secrets.yml

中有一个叫做secret_key_base的东西

如果通过 GitHub(public 存储库)意外共享此生产机密怎么办

黑客能做的最糟糕的事情是什么? 用户 table 中的加盐密码是否会因此泄露...

Rails 默认使用浏览器 cookie 作为其会话存储。这意味着与在服务器上存储会话数据并且在 cookie 中仅存储一个会话 ID 的传统方式相反,Rails 将整个会话数据存储在 cookie 中。

这在很多情况下当然不是很安全,任何用户都可以看到和修改他的会话内容。因此 Rails 中的 cookie 被加密并签名。用于此(加密和完整性验证)的密钥在 secret_key_base.

这实际上意味着如果这个 secret_key_base 被泄露,任何用户都可以解密、修改和重新加密他的会话 cookie(会话中的所有数据)。在某些应用程序中,这不会导致任何问题,因为无论如何会话中都不会存储任何有趣的内容。但在大多数情况下,它会根据实际的业务逻辑导致各种问题。例如,如果权限存储在会话中,则用户可以更改其在应用程序中的权限,这可能是意想不到的结果。

请注意,如果您使用不同的会话存储(例如 Redis),则不需要此机密。 Afaik 如果 cookie 存储用于会话,它仅用于加密 cookie。使用服务器端会话存储是一个好主意,也是最佳实践,因为它更安全。