来自Rack::Session::Cookie
的{{3}}包含以下有关未设置机密以检查Cookie完整性的警告:
没有为Rack :: Session :: Cookie提供秘密选项。 这构成了安全威胁。强烈建议你 提供一个秘密,以防止可能从精心设计的漏洞利用 饼干。
使用Rack::Session::Cookie
模块时,您可以这种方式设置机密:
use Rack::Session::Cookie, secret: 'change_me'
但是,我使用Rack::Session::Pool
,其中"提供简单的基于Cookie的会话管理。"我假设我还需要提供一个秘密,但无法找到相关的例子。源代码/文档也不是很有帮助。有没有人知道是否需要这样做,以及如果这样做会如何实现?
答案 0 :(得分:2)
如果你看一下this question and answer Cookie
和Pool
之间的差异{+ 3}},就会指出只保留“id”(实际上是SID)在cookie中,其他一切都保存在内存中。如果数据在内存中,则生成HMAC的要求比存储在cookie中的要低得多,如果真的需要,那么我认为它已经由你完成了。
我查看了the source,而Pool并未查找作为选项传递的秘密,但是Cookie会这样做。
我相信通过阅读Pool
的来源,每次都会生成一个唯一的SID,因此您的数据中不会显示任何键/ ID。
作为旁注,如果您打算选择使用Cookie,encrypt them。