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

mat*_*ure 3 php security authentication

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

Not*_*tMe 5

IP阻止不是可行的方法.

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

所以,那是行不通的.

您可以做的是将登录与会话联系起来,并将之前的会话踢出去.实质上:

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

会发生什么是用户Bob将登录并获得会话ID 10. Bob开始浏览您的网站,一切都很好.

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

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

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

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

有两件事情会发生.首先,一些用户会抱怨(有些人不会感到羞耻)..一定要有一个好的,但坚定的回应,关于你如何使用这个新的安全功能保护他们.不要让它消失.

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


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

  • 这正是我要提出的建议.您必须将会话ID绑定到他们的登录帐户.为了节省每次检查数据库,您可以简单地,当有人登录时,检查上次登录的会话文件是否仍然存在,如果存在,则将其删除(假设您仅将会话用于基本内容)删除以强制重新登录是安全的. (2认同)