避免从网站数据库中“数据抓取”的顶级技术

2022-08-30 16:45:16

我正在使用PHP和MySQL建立一个站点,它本质上只是现有数据库的Web前端。可以理解的是,我的客户非常热衷于阻止任何人在数据库中复制数据,但同时希望所有内容都公开可用,甚至需要一个“查看全部”链接来显示数据库中的每个记录。

虽然我已经做好了一切工作来防止SQL注入攻击等攻击,但没有什么可以阻止任何人将所有记录视为html并运行某种脚本来解析此数据回到另一个数据库中。即使我删除了“查看全部”链接,从理论上讲,有人仍然可以使用自动化过程逐个遍历每条记录,并将其编译到一个新的数据库中,基本上捏合所有信息。

有没有人有任何好的策略来防止甚至只是阻止他们可以分享的。


答案 1

虽然没有什么可以阻止一个坚定的人抓取公开可用的内容,但你可以做一些基本的事情来减轻客户的担忧:

  • 按用户帐户、IP 地址、用户代理等划分的速率限制...- 这意味着您可以限制特定用户组在特定时间段内可以下载的数据量。如果检测到正在传输大量数据,请关闭帐户或 IP 地址。

  • 需要JavaScript - 以确保客户端与交互式浏览器有一些相似之处,而不是准系统蜘蛛...

  • RIA - 通过富互联网应用程序接口提供您的数据。基于JavaScript的网格包括ExtJs,YUI,Dojo等。更丰富的环境包括 Flash 和 Silverlight,正如 1kevgriff 所提到的

  • 将数据编码为图像。这对普通用户来说非常具有侵入性,但是您可以将某些数据表或值编码为图像而不是文本,这会击败大多数文本解析器,但当然不是万无一失的。

  • 机器人.txt——否认明显的网络蜘蛛,已知的机器人用户代理。

    用户代理: *

    不允许: /

  • 使用机器人元标记。这将停止顺从蜘蛛。这将阻止谷歌将您编入索引,例如:

    <meta name=“robots” content=“noindex,follow,noarchive”>

有不同程度的威慑,第一种选择可能是侵入性最小的。


答案 2

如果数据已发布,则互联网上的每个人都可以看到和访问它。这包括你想看到它的人和你不看到它的人。

您不能同时拥有两种方式。您可以这样做,以便数据只能对帐户可见,并且人们会创建帐户来窃取数据。您可以做到这一点,以便数据只能在批准的IP地址中可见,并且人们将在诽谤之前完成获得批准的步骤。

是的,你可以让它变得难以获得,但是如果你想让它对典型用户来说很方便,你也需要让它方便恶意用户。


推荐