限制来自IP的请求数
我正在编写一个应用程序,其中要求限制用户可以从单个IP地址登录的次数(作为阻止垃圾邮件的一种方式)。 我们不能使用验证码出于某种原因!限制来自IP的请求数
我可以想到做这项工作的唯一方法是在数据库中存储从每个IP进入的请求数量。 或 要存储具有相同信息的跟踪cookie。
现在,第一种模式的缺点是会有太多的数据库流量 - 应用程序将被大量的人使用。 将此信息存储为cookie的缺点是用户可以再次清除广告开始。
我需要建议,如果有可能的方式,高数据库流量和基于cookie的跟踪松绑定可以处理。
,如果你想要得到的IP和存储的地方,你可以使用$_SERVER['REMOTE_ADDR']
获得用户的IP,让喜欢你的数据库“IP”字段和你进行查询您的SQL来检查IP被使用。 还有其他一些跟踪方式,比如Flash Cookie,人们通常不知道它的存在,因此大多数人都不知道如何清除它。
你说的是“登录”和网络应用程序,因此你有某种会话持续somwhere。在创建这些会话时,您需要跟踪每个IP的活动会话数量,并在达到该阈值时不分配新会话。
没有关于您的框架/环境的更多具体信息,那是任何人都可以提供的最佳答案。
另请注意,由于NAT(网络地址转换),此方法因多种方式失败。例如,我们的办公室只有一个公共IP地址可供X百人使用。内部网络位于私有IP空间。
@Downvoter,关心评论? –
是的..我想你提出了一个关于NAT的好处。看看它没有多少连续的会话存在..它的任何特定IP的会话总数需要被限制。 – Rohan
这就是......我说的。 *跟踪每个IP的活动会话数量* –
好吧..所以有一个小小的国防部刚刚发生。 – Rohan