阻止用户与多个IP共享帐户?

时间:2012-02-22 00:08:34

标签: php security authentication

任何人都可以指导我如何限制用户可以拥有的成员区域大约5-6的唯一IP数量的指南/教程。似乎我帮助管理的网站上的许多用户与数十到数百人分享他们的用户名。或者任何人都可以解释我如何能够针对此实施某种安全措施?

2 个答案:

答案 0 :(得分:5)

IP封锁不是可行的方法。

考虑同一企业防火墙内的一堆用户。当他们浏览网络时,由于代理服务器,所有这些网络似乎都具有相同的IP地址。代理服务器负责确保请求/响应能够传达给合适的人。

所以,这是行不通的。

您可以做的就是将登录与会话联系起来,并将之前的会话踢出去。基本上:

  1. 登录请求进来。
  2. 服务器为该请求分配会话ID,将其本地存储在该用户表中,然后将其发回cookie中。
  3. 在每个后续请求中,会话ID被验证以查看它是否仍与用户相关联。如果没有,请将它们踢出登录页面。
  4. 用户Bob将登录并获取会话ID 10. Bob开始浏览您的网站,一切都很好。

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

    Bob发出的下一个请求被重新验证..并且服务器看到会话10不再与Bob关联。 Boom:踢到了登录界面。

    鲍勃在挠头的同时重新登录。这会分配一个新ID:30。来自Sue的下一个请求将踢到登录页面。随之欢闹。

    只是为了解决问题,如果在一段时间内(如2分钟)将一些会话ID分配给同一帐户,则会向邮件中的电子邮件地址发送一条消息,告知他们的帐户可能已被黑客入侵。有可能甚至关闭帐户,同时要求他们通过点击电子邮件中的链接再次确认帐户是好的。让他们改变密码。

    有两件事情会发生。首先,许多用户会抱怨(有些人不会感到羞耻)..请确保对这个花哨的新安全功能保护他们的方式有一个很好但非常坚定的回应。不要让它靠近它。

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


    有趣的是,这与GoToMeeting等公司的工作方式类似。如果用户帐户当前正在主持会议,然后该帐户会在其他位置登录,则会终止原始会议。很有效。

答案 1 :(得分:2)

我要做的是创建一个数据库表,用于存储userId,使用的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的答案,因为这是一个更好的解决方案。