如何解决Rails用户切换会话
| 我有一个正在运行的Rails应用程序,似乎每隔一段时间,一个用户会从另一个用户那里获取cookie session_id值。 我使用active_record_store来跟踪Rails中的会话。 current_user方法:def current_user
@current_user ||= session[:user_id] ? User.find_by_id(session[:user_id]) : nil
return @current_user
end
我在使用Apache 2.2.15的Windows机器上运行8个ruby进程。有时,它向用户提供错误的“ 1”。我的rails版本是2.1.2
在日志文件中,我可以看到用户更改了其他用户的“ 1”。
例如:
Processing Manage::TruckController#show (for 179.34.103.8 at 2011-05-12 07:35:24) [POST]
Session ID: 1fbc801bbade1007291901ca810bfeda1eab76
....
Completed
5分钟后将获得一个不同的会话ID,但属于有效用户。
Processing Manage::TruckController#edit (for 179.34.103.8 at 2011-05-12 07:40:01) [POST]
Session ID: 2f8e84c40c490c509feabbce9701aa9101ba0f
....
Completed
在我看来,Rails会将不正确的session_id数据分发给了存储在用户Web浏览器中的cookie。
有什么建议吗?
解决方法
通过查看代码和
安全指南中,似乎MD5碰撞的可能性很小。不过,这种情况极不可能发生或不可再现,因此我更倾向于说这与浏览器测试有关。
首先,请使用Charles之类的工具来确保您的浏览器没有提供这些错误的会话ID。
我还建议尽可能使用cookie会话,这样可以避免此类问题。
最后,由于您运行的是旧版的Rails,因此值得尝试进行升级。您可能遇到了一个旧错误。
, 我发现这非常有用。
我如何防止用户从错误的用户身份上正确验证身份
如果你是:
在开发中破坏数据库
和
使用开箱即用的Rails secret_token.rb
客户端浏览器将保留一个有效的会话,其中包含一个user_id,该user_id可能或可能不属于该用户。
我遇到了类似的问题,并使用类似于
mdesantis关于管理Rails秘密令牌的评论
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。