防止非人为生成的请求

时间:2012-12-08 19:42:27

标签: php web-applications curl captcha capture

我开发了一个PHP应用程序,它的主要用例是从数据库中获取一些数据。我希望通过使用虚假请求来防止获取所有数据库数据记录。用户界面很简单(类似于Google主页),但我想提供上一条和下一条记录的链接,使用该应用程序无需注册。

您建议的解决方案是什么?

*更新:* 假请求是指由非人类e.i生成的请求。像cURL这样的机制,你通常会通过CAPTCHA阻止这样的请求。

1 个答案:

答案 0 :(得分:1)

您可以做一些事情,但要注意:有些用户可能不喜欢它。

  • 如果用户需要先登录才能进行搜索,那么您必须检查是否有有效的登录用户(我知道这很明显,可能不是您的情况,但可能有助于另一个人阅读您的问题) 。
  • 您可以设置一个请求处理程序(我是一个ASP.Net人),每秒不允许来自同一IP的多于1个请求,或每分钟30个请求等等。
  • 正如@ user1781026所述,您的请求应该有LIMIT(mySql)或TOP(SQL Server),因为如果用户通常不需要所有数据库记录(如果超过100或50000),则只需选择“这个限制的数字很好。
  • 您可能还要求用户选择“类别”或日期范围(“本月”,“上个月”,“今年”......)。
  • 如果您必须避免“任何”非人类请求,那么您唯一的选择是(afaik)要求登录或使用验证码。