gpt4 book ai didi

ruby-on-rails - Restful 身份验证的无意 session 劫持问题

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:59 25 4
gpt4 key购买 nike

我正在使用在 github 上找到的当前版本的 restful_authentication,我遇到了一堆奇怪的 session 问题。服务器似乎以某种方式将 session 分配给不应该的用户。只有在越过注销/登录障碍时才会发生这种情况。

这是一个例子。在服务器上没有事件 session 的情况下,我使用用户 A 登录帐户。在另一台计算机上,我使用用户 B 登录。然后当注销用户 B 时,在注销重定向发生后的某个时间,我将登录为用户 A。从这一点开始,我可以继续浏览该站点,就像我以该用户身份登录一样!我通过日志观察到的是,当发生这种劫持时, session ID 是不一样的。用户 A 在两个 session 中均已登录,但 session ID 完全不同。这只是可能发生的情况之一。我无法可靠地重现该问题,因为它看似随机。

它似乎不是环境或运行它的服务器的症状。我可以使用 mongrel 和 passenger 重现该问题。我也在开发和生产中看到过它。我在此应用程序中使用基于数据库的 session ,它运行在 Rails 2.1.1 上。我在调用生成器时应用了有状态选项。除此之外,没有对 session 的处理方式进行任何其他修改。

更新这是直接来自 restful_authentication 的违规方法。

# Accesses the current user from the session.
# Future calls avoid the database because nil is not equal to false.
def current_user
@current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
end

最佳答案

如果您(或编写 restful_authentication 的人)将当前用户缓存在类变量中,就会发生这种情况。我看过很多文章提倡使用“User.current_user”,但由于类是跨请求缓存的,这可能会导致 session 污染。

关于ruby-on-rails - Restful 身份验证的无意 session 劫持问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/145169/

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