有没有人可以在指南/教程的方式中指出如何限制一个用户可以有大约5-6个会员区域的唯一IP的数量。在我帮助管理的一个网站上,似乎有许多用户与数十到数百个其他人分享他们的用户名。或者有没有人能解释一下我如何实现某种安全性来防止这种情况呢?
发布于 2012-02-22 08:18:06
IP阻塞不是解决问题的办法。
考虑同一公司防火墙内的一群用户。当他们浏览网络时,由于代理服务器的原因,所有这些服务器看起来都具有相同的IP地址。代理服务器负责确保请求/响应到达正确的人。
所以,这是行不通的。
您可以做的是将登录绑定到会话并踢出之前的会话。本质上:
用户Bob将登录并获得会话ID 10。Bob开始浏览您的站点,一切都是A-OK。
然后Sue登录(使用Bob的凭据)。这会将会话ID 22分配给bob帐户。她开始浏览这个网站。
Bob发出的下一个请求是get的重新验证..并且服务器看到会话10不再与Bob相关联。轰隆一声:跳到登录屏幕。
鲍勃一边挠着头,一边重新登录。这将分配一个新的ID: 30。来自Sue的下一个请求将她踢到登录页面。随之而来的是搞笑。
为了好玩,如果在一段时间内(如2分钟)将几个会话ids分配给同一个帐户,则向文件中的电子邮件地址发送一条消息,表明他们的帐户可能已被黑客攻击。甚至可能关闭帐户,同时要求他们通过单击电子邮件中的链接来重新确认帐户是好的。让他们马上修改密码。
有两件事要发生。首先,许多用户会抱怨(有些人并不感到羞耻)..一定要有一个好的,但坚定的回应,关于你是如何通过这个奇特的新安全功能来保护他们的。不要在这件事上让步。
第二件事是,所有这些匿名用户都将获得自己的帐户(或离开)。原因是,仅仅因为他们共享密码而被踢出网站并不是一件好事。如果我没理解错的话,这就是我想要的行为。
有趣的是,这是一个类似于一些公司的设计,比如GoToMeeting。如果用户帐户当前正在主持会议,然后该帐户登录到其他地方,则原始会议将终止。非常有效。
发布于 2012-02-22 08:20:38
我要做的是创建一个数据库表,其中存储userId、使用的IP地址和看到IP的日期。如下所示:
Table IP
Id UserId IP Date
-------------------------------
0 42 192.168.1.3 2-21-12:01:32:00
然后在你的php中计算一下这个用户当天有多少个in。如果大于5,则阻止该用户。
不过,读了刚刚发布的一些答案,我会同意克里斯·莱弗利的回答,因为这是一个更好的解决方案。
https://stackoverflow.com/questions/9387302
复制相似问题