ruby - 使用 Rack::Session::Pool 存储的 cookie 的 secret

标签 ruby sinatra rack

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关于 CookiePool 之间的差异,它指出只有“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/

相关文章:

ruby - 要求深入了解减少 ruby 代码

ruby - 为什么我的 BigDecimal 计算器输出的值不正确?

ruby-on-rails - Rails 渲染 ajax 错误

ruby - sinatra config.ru : what is the configure block for?

ruby - Rake 任务不会在我的 sinatra 应用程序中运行

ruby - 使用 Sinatra 和 Rack Logger 记录时如何过滤敏感信息

ruby-on-rails - Rails 模型文件路径

ruby - 保护 Sinatra 应用程序的最佳实践是什么?

ruby - 如何通过 Ruby 和 ERB(不是 Rails)使用 View 和布局?

ruby-on-rails - 如何使用 puma(线程安全)在 Rails 应用程序上动态设置 tld_length