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

时间:2018-03-14 17:17:45

标签: ruby-on-rails authlogic dalli

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

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

我还没有弄清楚造成这个问题的原因,但最糟糕的是,即使我确实有假设,我也不知道如何确认它是否有效。< / p>

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

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

1 个答案:

答案 0 :(得分: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?由于您使用的是其他会话存储,可能是您自定义了会话标识符?