rails 如何知道 cookie 何时过期

问题描述 投票:0回答:1

我正在使用 cookie_store 来存储我的用户会话:

Rails.application.config.session_store :cookie_store, key: '_session', expire_after: 1.month

我相信这正如库所说的那样......但是当我从生产中解密实际的 cookie 时,我发现

"{"session_id":"42193dc27a12fca399509e6b6bb29751","_csrf_token":"EIqxBDqpUX1Bxmig1WXekbCExnhq4LP5D1JDYfoI8tA","app_field1": ...}"

(不用担心这个 cookie 是一个多月前的,所以泄露它不会带来安全风险)

显然有导轨设置

session_id
_csrf_token
。但这些都不是时间戳。 Rails 如何知道这个 cookie 何时到期? session_id 是否真的被解码为时间戳?

对我来说,这些 cookie 确实会过期很重要,因为我对会话重放攻击保持警惕。

ruby-on-rails security session
1个回答
0
投票

看看

Set-Cookie
标题:

#                                                     vvvvvvv
Set-Cookie: _stackoverflow_session=u9O...%3D; path=/; expires=Fri, 29 Mar 2024 06:12:25 GMT; httponly; SameSite=Lax
#                                  ^^^^^^^^^
#                 you've decrypted this part

您可以检查会话选项以查看当前配置:

session.options[:expire_after] #=> 1 month

此选项实际上仅由 Rack::Session

使用
来创建适当的
Set-Cookie
标头。所有这些都发生在中间件中,因此查看结果的简单方法是检查 cookie 或浏览器中的实际标头。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#expiresdate

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.