【问题标题】:How to detect if a user has another user's session in Rails?如何检测用户是否在 Rails 中有另一个用户的会话?
【发布时间】:2018-08-23 08:25:42
【问题描述】:

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

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

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

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

我只是不确定这是否可能。如果用户的 cookie 有错误的会话 ID,我怎么可能弄清楚呢?

【问题讨论】:

  • 特定用户还是所有用户?
  • 我只有过去几个月的几个例子,但他们是不同的用户。
  • 登录时会出现这种情况吗?或者用户可以以 userA 身份登录,然后以 userB 身份登录?
  • 我不确定,这是我希望学习的东西之一。
  • 那么您是如何注意到这种情况发生的?有确凿的证据吗?

标签: ruby-on-rails authlogic dalli


【解决方案1】:

尝试返回已签名、加密的 cookie 会话存储。将 memcached 用于经常访问的项目,例如用户记录。从 memcached 而不是数据库加载用户模型。

如果你真的想记录会话劫持,那么记录用户的 IP 地址。如果 IP 地址突然改变,就好像他们在一个地方登录一样,然后突然从另一个地方发出请求,那么可能是另一个用户劫持了他们的会话 cookie?

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多