使用robots.txt的安全问题

时间:2014-03-15 00:29:26

标签: web robots.txt

我正在尝试阻止网络搜索抓取工具索引我的网络服务器上的某些私人网页。说明将这些内容包含在robots.txt文件中,并将其放入我的域的根目录中。

但我对此类方法存在问题,主要是,任何人都可以转到www.mywebsite.com/robots.txt并查看结果:

# robots.txt for Sites
# Do Not delete this file.

User-agent: *
Disallow: /php/dontvisit.php
Disallow: /hiddenfolder/

将告诉任何人我不希望任何人去的页面。

知道如何避免这种情况吗?

PS。以下是我不希望向公众公开的页面示例:我的软件许可证付款的PayPal验证页面。页面逻辑不会让dud请求通过,但它会浪费带宽(对于PayPal连接,以及我服务器上的验证),并且它会将连接尝试条目记录到数据库中。

PS2。我不知道这个页面的URL是如何“向公众”发布的。除了我的服务器上的PayPal和via .php脚本之外,它没有列在任何地方。页面本身的名称类似于:/php/ipnius726.php所以抓取者只能猜测它并不简单。

5 个答案:

答案 0 :(得分:3)

网址是公开的。讨论结束。你必须假设,如果你保持URL的长度不变,就可以访问它。

你能做的是:

  1. 安全访问这些网址背后的功能
  2. 让人们好好不要去拜访他们
  3. 有很多方法可以实现数字1,但最简单的方法是为授权用户提供某种会话令牌。

    正如您所提到的,使用robots.txt实现了数字2。大爬虫将尊重该文件的内容,并将列出的页面保留在那里。

    你真的可以做的就是。

答案 1 :(得分:1)

您可以将想要保留的内容保存为子文件夹。因此,举例来说,将页面放在/hiddenfolder/aivnafgr/hfaweufi.php中(其中aivnafgrhiddenfolder的唯一子文件夹,但只需将hiddenfolder放入robots.txt。

答案 2 :(得分:1)

如果你把你的"隐藏"在子目录下的页面,例如private,然后您可以Disallow: /private而不暴露该目录中任何内容的名称。

我已经看到的另一个技巧是通过明确列出一个实际上不属于您网站的文件来为不诚实的机器人创建一种蜜罐,只是为了查看谁请求它。类似Disallow: /honeypot.php的内容,您知道honeypot.php的任何请求都来自抓取您robots.txt的客户端,因此您可以将该用户代理字符串或IP地址列入黑名单。

答案 3 :(得分:1)

您说您不想重写您的网址(例如,所有不允许的网址都以相同的路径段开头)。

相反,您也可以指定不完整​​的URL路径,这不需要任何重写。

所以要禁止/php/ipnius726.php,您可以使用以下robots.txt:

User-agent: *
Disallow: /php/ipn

这将阻止路径以/php/ipn开头的所有网址,例如:

  • http://example.com/php/ipn
  • http://example.com/php/ipn.html
  • http://example.com/php/ipn/
  • http://example.com/php/ipn/foo
  • http://example.com/php/ipnfoobar
  • http://example.com/php/ipnius726.php

答案 4 :(得分:1)

这是为了补充大卫安德伍德和亚瑟的答案(没有足够的重复点我只是回答这个问题)。最近的挖掘表明,谷歌有一个条款允许他们在其他安全问题的基础上忽略以前受尊重的机器人文件。该链接是来自Zac Gery的博客,解释了新的(呃)政策和一些简单的解释,如何强迫"谷歌搜索引擎很不错。我意识到这并不是你想要的,但在质量保证和安全方面,我发现它非常有用。

http://zacgery.blogspot.com/2013/01/why-robotstxt-file-is-no-longer.html