如何检测用户是否在Rails中有另一个用户的会话?

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

我们遇到了一个奇怪的,很少发生的错误,用户将登录到另一个用户的帐户。

我们在Rails 4.2上。我们使用authlogic进行身份验证,使用dalli作为memcached客户端。使用memcache作为会话存储。

我一直无法弄清楚导致这个问题的原因,但最糟糕的是,即使我确实有假设,我也不知道如何确认它是否有效。

我想找到一些方法来记录用户是否被错误的会话,以帮助调试问题和确定潜在的修复是否有效。

我只是不确定是否可能。如果用户的cookie有错误的会话ID,我怎么能想出来?

ruby-on-rails authlogic dalli
1个回答
0
投票

尝试返回签名的加密cookie会话存储区。对经常访问的项目(如用户记录)使用memcached。从memcached而不是数据库加载用户模型。

如果您确实要记录会话劫持,请记录用户的IP地址。如果IP地址突然改变,好像它们被记录在一个地方,然后突然间从另一个地方发出请求,那么可能是另一个用户劫持了他们的会话cookie?

http://guides.rubyonrails.org/v5.0/security.html#session-hijacking

请注意,使用TOR会显示该模式,因为它每十分钟生成一个新路由,但并不意味着会话被盗或混淆。

如果您没有使用签名或加密的cookie,那么它允许Javascript或恶意广告窃取会话ID,并将其发送回攻击者的服务器。

它也可能是您的会话ID不安全或足够随机。也许新的会话ID会覆盖memcached中的另一个会话ID?由于您使用的是其他会话存储,可能是您自定义了会话标识符?

© www.soinside.com 2019 - 2024. All rights reserved.