阻止用户使用多个IP';s


Blocking a user from sharing account with multiple IP's?

有人能给我一份指南/教程,告诉我如何将用户在会员区的唯一IP数量限制在5-6个左右吗。我帮助管理的网站上似乎有很多用户与数十到数百名其他人共享他们的用户名。或者有人能解释一下我如何实现某种安全措施吗?

IP阻塞不是解决办法。

考虑同一个公司防火墙内的一群用户。当他们浏览网络时,由于代理服务器的原因,所有人看起来都有相同的IP地址。代理服务器负责确保请求/响应到达正确的人。

所以,这是行不通的。

您可以做的是将登录绑定到会话,并踢出以前的会话。本质上:

  1. 登录请求出现
  2. 服务器为该请求分配一个会话id,将其本地存储在该用户表中,并将其发送回cookie中
  3. 在每个后续请求中,都会验证会话id,以查看它是否仍与用户关联。如果没有,请将它们踢出登录页面

将会发生的情况是,用户Bob将登录并获得会话ID 10。鲍勃开始浏览你的网站,一切都很好。

然后苏(用鲍勃的凭据)登录。这将会话ID 22分配给bob帐户。她开始浏览网站。

Bob发出的下一个请求已重新验证。。并且服务器看到会话10不再与Bob相关联。轰:踢到登录屏幕。

鲍勃一边挠头一边重新登录。这将分配一个新的ID:30。Sue的下一个请求将她的踢到登录页面。随之而来的是欢声笑语。

只是为了好玩,如果在一定时间内(如2分钟)将几个会话ID分配给同一个帐户,则会向文件中的电子邮件地址发送消息,表明他们的帐户可能已被黑客入侵。甚至可能关闭该账户,同时通过点击电子邮件中的链接要求他们再次确认该账户是否良好。让他们马上更改密码。

将会发生两件事。首先,许多用户会抱怨(有些人毫无羞耻感)。。一定要有一个很好但坚定的回应,告诉你如何用这个奇特的新安全功能来保护他们。不要让步。

第二件事是,所有这些匿名用户都将获得自己的帐户(或离开)。原因是仅仅因为他们共享了密码而被逐出网站并不是一件好事。如果我理解正确的话,这就是我想要的行为。


有趣的是,这与GoToMeeting等一些公司的工作方式类似。如果用户帐户当前正在主持会议,并且该帐户登录到其他地方,则终止原始会议。相当有效。

我要做的是创建一个数据库表,存储用户ID、使用的IP地址和看到IP的日期。类似这样的东西:

Table IP
Id    UserId    IP       Date
-------------------------------
0    42       192.168.1.3   2-21-12:01:32:00

然后在您的php中计算有问题的用户当天有多少IP。如果超过5,则阻止用户。

不过,阅读了刚刚发布的一些答案,我会同意Chris Lively的回应,因为这是一个更好的解决方案。