首页 > 解决方案 > 阻止对服务器上我的系统 Web 应用程序文件的访问

问题描述

为了更清楚,我想了解这个简单的问题:更改文件的扩展名会改变其原始性质吗?

我的意思是如果我将文本文件(.js、.php、.html、.css)更改为 .exe 文件 - 这是否意味着爬虫/机器人无法读取它的内容?


原帖:

摘要:我试图阻止对服务器上我的系统 Web 应用程序文件的访问。

我想到了几种方法:

  1. 对 htaccess 文件施加限制。
  2. 植入一个脚本(在带有/不带有 Ajax 的 JavaScript 中),以便将内容转发/显示给不包含“bot”、“google”等字符串的用户代理。
  3. 用 EXE 等外星扩展名包装我的系统文件,然后使用服务器以正确的扩展名(js、css、php 等)复制它的内容以执行它,并在会话结束后 - 删除这些副本服务器。

我知道如何做这 3 种方法,但我想知道:

一个。哪种做法最好?

湾。这是否可行(我的意思是上述其中一项是否会隐藏所有类型的机器人/爬虫的系统文件),或者还有什么需要关注的吗?

在我看来,第三个选项是最好的,但我想知道:机器人是否能够识别文件是否包含文本,即使它具有非文本扩展名?

希望这不是超出范围的问题,但如果是这样,我会关心一些好的/可靠的外部链接(或者可能是其他 SO 论坛)以获得一些指导,因为 SO 上的相关问题已经有几年历史了......

标签: ajax.htaccesssecuritybots

解决方案


使用 robots.txt

要禁止机器人,您可以使用服务器上的 robots.txt 文件。大多数合法且友好的爬虫和机器人首先阅读 robots.txt 文件并开始在网站上抓取允许的网址,不鼓励忽略的网址。

元标记还具有告诉机器人停止其操作的属性。

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

例子:

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/

使用 .htaccess

其次,您可以使用 htaccess 以这样一种方式重写您的实际文件,这样就不是没有人可以轻松地判断该请求将发送到所请求的确切文件,或者如果您愿意,您可以永久阻止。

像这样的东西

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} (crawler|bot) [NC]
    RewriteRule (.*) - [F,L]
</IfModule>

使用验证码

正如其他用户所建议的那样,验证码也是过滤机器人的好方法。

参考:

https://developers.google.com/recaptcha

https://www.robotstxt.org/


推荐阅读