我想确保搜索蜘蛛不会索引我网站的管理端。不幸的是,如果我将路径放入我的 robots.txt 文件中,我将交出 cookie 罐。不过谢天谢地,它被锁定了。
您正确地认识到了这个难题。如果您将管理员网址放在 robots.txt 中,那么行为良好的机器人将远离。另一方面,你基本上是在向坏人发出信号。
如果您检查您的网络服务器的访问日志,您很可能会看到大量对管理类型页面的请求。例如,查看我的一台服务器上的 apache 日志,我看到机会主义脚本小子正在搜索 wordpress、phpmyadmin 等:
109.98.109.101 - - [24/Jan/2019:08:48:36 -0600] "GET /wpc.php HTTP/1.1" 404 229 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)"
109.98.109.101 - - [24/Jan/2019:08:48:36 -0600] "GET /wpo.php HTTP/1.1" 404 229 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)"
109.98.109.101 - - [24/Jan/2019:08:48:37 -0600] "GET /wp-config.php HTTP/1.1" 404 229 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)"
109.98.109.101 - - [24/Jan/2019:08:48:43 -0600] "POST /wp-admins.php HTTP/1.1" 404 229 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
109.98.109.101 - - [24/Jan/2019:08:50:01 -0600] "GET /wp-content/plugins/portable-phpmyadmin/wp-pma-mod/index.php HTTP/1.1" 404 229 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36
109.98.109.101 - - [24/Jan/2019:08:48:39 -0600] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 229 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)"
109.98.109.101 - - [24/Jan/2019:08:48:39 -0600] "GET /phpmyadmin/scripts/db___.init.php HTTP/1.1" 404 229 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)"
109.98.109.101 - - [24/Jan/2019:08:49:35 -0600] "GET /phpmyadmin/index.php HTTP/1.1" 404 229 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
109.98.109.101 - - [24/Jan/2019:08:49:47 -0600] "GET /admin/phpmyadmin/index.php HTTP/1.1" 404 229 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
109.98.109.101 - - [24/Jan/2019:08:49:47 -0600] "GET /admin/phpmyadmin2/index.php HTTP/1.1" 404 229 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
我的访问日志有成千上万的这些。机器人一直在搜索它们,而我的 robots.txt 文件中没有列出了这些文件。正如你可能猜到的,除非你有一个真正随机命名的管理 url,否则坏人很可能会猜到它的名字是 /admin。
我已经有不少“访问者”从抓取 robots.txt 开始。显然,非法蜘蛛会忽略 robots.txt,但我想阻止 Google 和 Bing 在搜索结果中粘贴我的管理目录。
我强烈建议您花一些时间来禁止不良机器人或基本上任何您无用的机器人。我想到了 AHrefsBot 和 SemRushBot。找到bad bot lists 应该不难,但您需要评估您找到的任何列表,以确保它不会阻止您想要服务的机器人。除了向您的 robots.txt 文件添加排除规则外,您还应该配置您的应用程序以通过发送 403 禁止或 404 消失或other HTTP response code of your choice 来禁止恶意机器人。
最后,记住“security by obscurity 不是安全”这一格言至关重要。加密和安全最重要的原则之一是Kerckhoff's Principle——即“敌人知道系统”。您的网站不应仅仅依赖于您的管理员网址的位置是否模糊或秘密。您必须要求身份验证并在身份验证代码中使用合理的最佳做法。我不会依赖 apache 身份验证,而是将我的 Web 应用程序编码为以安全托管的形式(使用 HTTPS)接受用户登录名/密码,并且我只会存储这些密码的散列形式。 永远不要存储明文密码。
最终,您系统的安全性与最薄弱的环节一样好。拥有一个独特的或不寻常的管理员有一些价值,因为您可能会受到更少的攻击,但这本身并不能提供任何真正的安全性。如果您仍然对在 robots.txt 文件中广播此 url 有所保留,不妨权衡一下如果 GoogleBot 或 BingBot 或其他一些友好的机器人开始在您的管理 url 中跺脚,您可能会遇到的问题。如果这些网址最终出现在 google 搜索索引中,您会不会感到困扰?