【问题标题】:Preventing non-human generated requests防止非人为生成的请求
【发布时间】:2023-03-06 23:02:02
【问题描述】:

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

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

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

【问题讨论】:

  • 虚假请求是什么意思?来自其他网站的请求,而不是您自己的?
  • 在 SQL 查询中使用 LIMIT 和 mysql_real_escape_string()?不知道,出错的可能性很多。
  • 正如@Emily 所说,您首先必须定义什么是“真实请求”和什么是“假请求”。用户是否通过按下按钮启动真正的请求?他登录了吗?
  • @Emily 问题已更新。

标签: php web-applications curl captcha capture


【解决方案1】:

您可以做几件事,但请注意:有些用户可能不喜欢它。

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

【讨论】:

  • 我怎样才能只让搜索引擎抓取我的数据而其他人不抓取?
  • 哇,这是一个全新的问题:这取决于您希望搜索引擎获取什么样的数据,以及您为防止“虚假请求”所做的工作可能会阻止搜索引擎机器人也可以抓取数据。您应该提出一个新问题,并添加一个指向该问题的链接,以便其他用户了解上下文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多