AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 110826
In Process
Toto
Toto
Asked: 2010-02-09 09:38:45 +0800 CST2010-02-09 09:38:45 +0800 CST 2010-02-09 09:38:45 +0800 CST

如何保护我的站点地图索引文件和 sitemap.xml 文件免受 leechers 攻击?

  • 772

我有一个“内容”网站,一些 leechers 和 419 诈骗者喜欢积极地抓取它,这也会产生成本和性能问题。:(我别无选择:我需要阻止他们访问站点地图文件和索引。:(

我的做法与 Facebook 相同:我即时生成站点地图索引 (/sitemap.php)。我使用 DNS 反向查找 (PHP) 和代理检查(与 Stackoverflow 相同)将“好”爬虫列入白名单。为了防止列入白名单的引擎公开站点地图索引内容,我添加了该标题(Stackoverflow 忘记了):

header('Content-type: application/xml; charset="UTF-8"', true);
header('Pragma: no-cache');
header('X-Robots-Tag: NOARCHIVE');

问题 1:我是否缺少保护站点地图索引文件的内容?

问题2:问题来自生成的静态站点地图(.xml.gz)文件。我该如何保护他们?即使它们有一个“难以猜测”的名称,也可以通过简单的谷歌查询(例如:“ site:stackoverflow.com filetype:xml ”)轻松找到它们,而且我对 .htaccess 的访问权限非常有限。

编辑:这不是服务器配置问题。首选语言是 PHP。

编辑 2:对不起,这是纯程序问题,但它已从 SO 转移,我无法关闭/删除它。:(

php sitemap
  • 4 4 个回答
  • 2577 Views

4 个回答

  • Voted
  1. cherouvim
    2010-02-09T09:44:34+08:002010-02-09T09:44:34+08:00

    您始终可以使用站点地图的 URL,除了您将明确提交的引擎之外,该 URL 不会向其他任何人披露。

    看看http://en.wikipedia.org/wiki/Sitemaps

    • 4
  2. Anti-Scrapper
    2013-07-08T11:12:14+08:002013-07-08T11:12:14+08:00

    您应该使用白名单,并且只允许良好的搜索引擎访问这些站点地图文件,例如 Google 和 Bing。

    这是一个大问题,恐怕大多数人在向 Google 和 Bing 提交站点地图文件时甚至都不会考虑。我跟踪对我的 xml 站点地图文件的每个请求,并且自从我开始这样做(3 个月前)以来,我已经拒绝访问超过 6,500 个 IP。现在只有 Google、Bing 和其他一些人才能查看这些文件。

    由于您使用的是白名单而不是黑名单,因此他们可以购买他们想要的所有代理,并且永远无法通过。此外,您还应该在将 IP 列入白名单之前执行反向 DNS 查找,以确保它们确实来自 Google 或 Bing。至于如何在 PHP 中做到这一点,我不知道,因为我们是微软商店,只做 ASP.NET 开发。我将首先获取 Google 和 Bing 运行其机器人的 IP 范围,然后当来自其中一个 IP 的请求进入时,执行 DNS 查找并确保“googlebot”或“msnbot”在 DNS 名称中,如果是,则对该名称执行反向 DNS 查找,以确保返回的 IP 地址与原始 IP 地址匹配。如果是,那么您可以安全地允许 IP 查看您的站点地图文件,如果不是,则拒绝访问并 404 小丑。

    请注意,我拥有并运营着一个每月浏览量约为 4,000,000 次的网站,所以对我来说,这是一个非常重要的优先事项,因为我不希望我的数据很容易被废弃。此外,我在 12 小时内来自同一 IP 的 50 个页面请求后使用了 recaptcha,这确实可以很好地清除机器人。

    我花时间写这篇文章,因为我希望它可以帮助其他人,并阐明我认为在很大程度上被忽视的问题。

    • 3
  3. wallyk
    2010-02-09T09:54:10+08:002010-02-09T09:54:10+08:00

    不即时创建 sitemap.php怎么样?而是每天重新生成一次(或任何有意义的)并将其作为静态文件提供。这样,即使每天有 10,000 个爬虫请求它——那又如何?

    • 1
  4. Mech
    2010-02-09T09:46:25+08:002010-02-09T09:46:25+08:00

    您可以使用 robots.txt 禁止该文件,但您也可以阻止 IP。一个简单的方法是查看您的 Web 日志中的 HTTP 引荐来源网址,并编写一个 cron 作业来获取这些 IP(通过引荐来源网址)并将它们添加到您网站的 hosts.deny 中。

    • 0

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve