source来自 Rack::Session::Cookie
包含以下关于不设置 secret 来检查 cookie 完整性的警告:
No secret option provided to Rack::Session::Cookie. This poses a security threat. It is strongly recommended that you provide a secret to prevent exploits that may be possible from crafted cookies.
当使用Rack::Session::Cookie
模块时,您可以通过这种方式设置 secret :
use Rack::Session::Cookie, secret: 'change_me'
但是,我使用的是Rack::Session::Pool
,它“提供简单的基于 cookie 的 session 管理”。我假设我还需要向它提供一个 secret ,但找不到相关的示例。源代码/文档也不是很有帮助。有谁知道是否需要这样做,如果需要的话将如何完成?
最佳答案
如果你看一下 this question and answer关于 Cookie
和 Pool
之间的差异,它指出只有“id”(实际上是 SID )保存在 cookie 中,其他所有内容都保存在内存中。如果数据在内存中,那么生成 HMAC 的要求比存储在 cookie 中的要求要低得多,并且如果您确实需要它,那么我想这已经由您决定了。
我查看了the source ,和Pool不寻找作为选项传递的 secret ,但 Cookie确实如此。
通过阅读 Pool
的源代码,我相信它每次都会生成一个唯一的 SID,因此您的数据中不会暴露任何 key /ID。
顺便说一句,如果您要选择使用 cookie,encrypt them .
关于ruby - 使用 Rack::Session::Pool 存储的 cookie 的 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837255/