2011-09-24 110 views
-1

我正在编写一个应用程序,其中要求限制用户可以从单个IP地址登录的次数(作为阻止垃圾邮件的一种方式)。 我们不能使用验证码出于某种原因!限制来自IP的请求数

我可以想到做这项工作的唯一方法是在数据库中存储从每个IP进入的请求数量。 或 要存储具有相同信息的跟踪cookie。

现在,第一种模式的缺点是会有太多的数据库流量 - 应用程序将被大量的人使用。 将此信息存储为cookie的缺点是用户可以再次清除广告开始。

我需要建议,如果有可能的方式,高数据库流量和基于cookie的跟踪松绑定可以处理。

+0

好吧..所以有一个小小的国防部刚刚发生。 – Rohan

回答

0

,如果你想要得到的IP和存储的地方,你可以使用$_SERVER['REMOTE_ADDR']获得用户的IP,让喜欢你的数据库“IP”字段和你进行查询您的SQL来检查IP被使用。 还有其他一些跟踪方式,比如Flash Cookie,人们通常不知道它的存在,因此大多数人都不知道如何清除它。

+0

-1暗示闪存饼干,他们是邪恶的。 – Clive

+0

这是一个选项,因为有些人使用与共享互联网相同的IP,所以你必须找到新的选项。像Flash Cookies,尽管我同意你的看法。 – Grego

+0

Brian提出了一个非常好的观点。如果存在一个公司拥有一组静态IP地址和NAT的情况,那么他们的网络中就存在这种情况 - 此IP地址记录肯定会失败。任何想法谷歌如何使用Gmail和其他产品?他们肯定会记录你的知识产权并放弃cookies。但是能否有另一种方法来确保事情? – Rohan

1

你说的是“登录”和网络应用程序,因此你有某种会话持续somwhere。在创建这些会话时,您需要跟踪每个IP的活动会话数量,并在达到该阈值时不分配新会话。

没有关于您的框架/环境的更多具体信息,那是任何人都可以提供的最佳答案。

另请注意,由于NAT(网络地址转换),此方法因多种方式失败。例如,我们的办公室只有一个公共IP地址可供X百人使用。内部网络位于私有IP空间。

+0

@Downvoter,关心评论? –

+0

是的..我想你提出了一个关于NAT的好处。看看它没有多少连续的会话存在..它的任何特定IP的会话总数需要被限制。 – Rohan

+0

这就是......我说的。 *跟踪每个IP的活动会话数量* –