2009-08-20 118 views
4

阻止用户在Rails中共享会话Cookie的最佳方式是什么?在Rails中阻止恶意用户之间的会话共享

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

基本上我想如果有人试图与他人分享付费会员来检测。用户在登录时已经从多个不同的子网登录过,但有人试图通过共享会话cookie来解决这个问题。没有将会话绑定到IP(许多合法人员使用旋转代理),做到这一点的最佳方式是什么。

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

现在我正在考虑为每个请求应用一个before过滤器,以便跟踪用户在memcached中使用的哪个Subnets和session_ids,并将启发式应用于该过程以确定Cookie是否被共享。

任何更简单/更容易实现的想法?任何现有的插件,这样做?我能想到的

回答

1

您可以将会话信息绑定到浏览器信息。如果人们在一段时间内使用3种或4种不同的浏览器类型,则可以推断出可疑事件可能正在发生。

另一个答案依赖于一点社会工程。如果您有一些您信任的启发式方法,则可以警告用户(位于页面顶部)您怀疑他们正在分享他们的帐户,并且他们正在密切关注。警告中的“联系我们”链接将允许合法用户解释他们自己(并因此被永久性地取消标记)。这可以将问题最小化,足以将其从您的雷达中解救出来。

+0

Ron, 感谢您的回应,我选择了您的Jesse's,因为我担心他的方法中可能的竞争条件。不幸的是,我已经实现了一个基于子网的方法,但如果有任何问题,这是列表中的下一个。 – 2009-08-22 14:33:56

+0

很高兴它适合你。出于好奇,你会彻底禁止你怀疑的人,还是以某种类似于我所建议的方式警告他们? – 2009-08-22 16:46:08

1

一种方法是在会话和与每个页面刷新一个cookie都设置相同的随机值。检查两个以确保它们相同。如果有人分享他们的会话,cookie和会话将不同步。

+0

这是一个好主意。 问题,这可能会导致野外的竞争条件?如同,如果有人中途点击一堆链接打开标签中的em,你是否认为序列可能会混乱并给出误报? 无论如何,我最终只是按照我今天下午提出的方式实施它,因为我需要完成它。 – 2009-08-21 07:43:51

相关问题