gpt4 book ai didi

session - 轨道 4 : Session Expiry?

转载 作者:行者123 更新时间:2023-12-02 10:45:07 27 4
gpt4 key购买 nike

我刚刚从 Rails 3.2 切换到 Rails 4。我正在努力确保我尽可能了解安全问题,并且我现在担心 session 。看起来 Rails 4 已经不再支持除基于 cookie 的 session 之外的任何内容,但听起来不可能阻止基于 cookie 的 session 永远存在。我读过几篇文章,但这是最官方的:http://guides.rubyonrails.org/security.html#session-expiry 。请注意他们如何指出这是基于 cookie 的 session 的问题,然后他们为基于数据库的 session 提供了修复程序(显然,现在已弃用)。

我真的很困惑。我希望能够阻止攻击者获取 cookie,从而使他能够永久访问我的受登录保护的网站。显然我可以在initializers/session_store.rb中设置:expire_after,但除非我错了,否则只需设置客户端的cookie的过期时间,并且很容易被攻击者更改,以便 session 可以永远存在。当然,我可以通过强制 SSL、使用安全 cookie 和仅强制 HTTP 来使事情变得更好,但是在我可以强制 session 过期之前,这永远不会是完整的防御。

当 Rails 弃用拥有服务器端 session 的唯一方法时,我该如何解决这个问题?

我知道事件记录 session 已移至 gem 中并且仍然可用,但事实是它已被弃用。应该可以在不引入更多依赖项的情况下找到解决方案,或者至少不使用已弃用的功能。

最佳答案

Rails 具有“防篡改” session cookie。为了防止 session 哈希篡改,将使用服务器端 key 根据 session 计算摘要并将其插入 cookie 的末尾。只要确保你有一个长期的 secret 即可。如果您想定期重置所有用户 session ,请更改您的密码。

要回答您的问题,如果您想为 session 数据添加额外的超时,您可以这样做:

session[:user_id] = user.id
session[:expires_at] = Time.current + 24.hours

然后,在验证用户身份时,执行以下操作:

if session[:expires_at] < Time.current
# sign out user
end

希望有帮助。

关于session - 轨道 4 : Session Expiry?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17480487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com