停止Rails中恶意用户之间的会话共享

时间:2009-08-20 18:28:50

标签: ruby-on-rails security session

阻止用户在Rails中共享会话cookie的最佳方法是什么?

我认为我有一个很好的方法可以做到这一点,但是我想通过堆栈溢出人群来运行它,看看是否有更简单的方法。

基本上我想检测是否有人试图与他人分享付费会员资格。用户已经在登录时进行筛选,以便从太多不同的子网登录,但有些人试图通过共享会话cookie来解决此问题。如果不将会话与IP绑定(许多合法人员使用旋转代理),最好的方法是什么。

我发现的最好的启发式是B类子网/时间#(某些ISP在不同的C类上使用旋转代理)。这为我们产生了最少的误报,所以我想坚持使用这种方法。

现在我正在考虑为每个请求应用一个前置过滤器,用于跟踪用户在memcached中使用的子网和session_id,并将启发式应用于该过滤器以确定cookie是否正在共享。

更简单/更容易实现的想法?任何现有的插件都可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

我能想到的一种方法是在每次刷新页面时在会话和cookie中设置相同的随机值。检查两者以确保它们是相同的。如果有人分享他们的会话,那么cookie和会话就会失去同步。

答案 1 :(得分:1)

您可以将会话信息与浏览器信息联系起来。如果人们在特定时间段内从3种或4种不同的浏览器类型进入,您可以推断出可能发生的事情。

另一种答案依赖于一些社会工程。如果您有一些您信任的启发式方法,则可以警告用户(在页面顶部)您怀疑他们正在共享他们的帐户并且他们正在密切关注。警告中的“联系我们”链接将允许合法用户自我解释(因此被永久地取消标记)。这可以最大限度地减少问题,使其脱离你的雷达。