在rails中,我们在config/secrets.yml
如果通过GitHub(公共回购)意外分享此生产机密,该怎么办
黑客可以做的最糟糕的事情是什么? 因此,用户表中的盐渍密码会泄漏......
答案 0 :(得分:2)
默认情况下,Rails使用浏览器cookie作为其会话存储。这意味着,与在服务器上存储会话数据的传统方式相反,只有cookie中的会话ID,Rails将整个会话数据存储在cookie中。
在许多情况下,这当然不是很安全,任何用户都可以看到和修改他的会话内容。所以Rails中的cookie是加密和签名的。用于此目的的密钥(加密和完整性验证)位于secret_key_base
。
这实际上意味着如果此secret_key_base
被泄露,任何用户都可以解密,修改和重新加密他的会话cookie(会话中的所有数据)。在某些应用程序中,这不会产生任何问题,因为无论如何都没有任何有趣的存储在会话但在大多数情况下,它会导致各种问题,具体取决于实际的业务逻辑。例如,如果特权存储在会话中,则用户可以在应用程序中更改其权限,这可能是意外结果。
请注意,如果您使用其他会话商店(例如Redis),则不需要此秘密。 Afaik它只用于加密cookie,如果cookie存储用于会话。使用服务器端会话存储是一个好主意,也是最好的做法,因为它更安全。