Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 关于网站地图的问题_Security_Apache_Sitemap_Lamp - Fatal编程技术网

Security 关于网站地图的问题

Security 关于网站地图的问题,security,apache,sitemap,lamp,Security,Apache,Sitemap,Lamp,我正在将网站地图存储在我的web文件夹中。我希望网络爬虫(谷歌机器人等)能够访问该文件,但我不一定希望所有人都能访问它 例如,这个站点(stackoverflow.com)有一个站点索引,由robots.txt文件()指定 但是,当您键入时,将指向404页面 如何在我的网站上实现相同的功能 我正在运行一个LAMP网站,而且我正在使用一个站点地图索引文件(因此我有多个站点地图)。我希望使用相同的机制使它们通过浏览器不可用,如上所述。您可以检查客户端发送的用户代理标题,并且只将站点地图传递给已知的搜

我正在将网站地图存储在我的web文件夹中。我希望网络爬虫(谷歌机器人等)能够访问该文件,但我不一定希望所有人都能访问它

例如,这个站点(stackoverflow.com)有一个站点索引,由robots.txt文件()指定

但是,当您键入时,将指向404页面

如何在我的网站上实现相同的功能


我正在运行一个LAMP网站,而且我正在使用一个站点地图索引文件(因此我有多个站点地图)。我希望使用相同的机制使它们通过浏览器不可用,如上所述。

您可以检查客户端发送的用户代理标题,并且只将站点地图传递给已知的搜索机器人。但是,这并不真正安全,因为用户代理标头很容易被欺骗。

堆栈溢出可能会在决定谁可以访问站点地图时检查两件事:

  • 用户代理
    字符串
  • 起始IP地址
两者都可能与已知合法机器人的数据库相匹配

USER\u-AGENT
字符串在服务器端语言中很容易检查;它也很容易伪造。更多信息:

  • 有关如何检查用户\u代理字符串的信息

  • 有关IP检查谷歌的说明:

  • 相关的:


首先,决定要获取实际站点地图的网络

其次,将web服务器配置为允许来自这些网络的站点地图文件请求,并将web服务器配置为将所有其他请求重定向到404错误页面

对于nginx,您希望粘贴类似于
allow 10.10.10.0/24的内容编码到站点地图文件的
位置
块中


对于apache,您希望在站点地图文件的
指令中使用的
Allow
指令。

这绝对是我想要的方式。用户代理很容易伪造,所以这很有吸引力。我知道这绝不是一个“神奇的银弹”,但我认为它(至少,稍微)比涉及用户代理字符串的服务器端逻辑更健壮。请提供一个例子,如果请求来自google.com,您可以访问web文件夹中的sitemap-index.xml和*.gz文件吗?@morphental,诀窍在于找到网络——谷歌从googlebot.com抓取,谁知道他们是够善良的,可以坚持使用单个NetBlock,还是使用几十个NetBlock。我建议你检查一下你的日志,找出哪些是你想允许的,哪些是你想拒绝的。