在设置临时站点或类似站点时,我经常添加一个简单的 Apache 身份验证检查,以阻止每个人查看站点。这对于阻止搜索引擎蜘蛛访问带有测试内容的站点也很有用,这通常会导致问题。它不是非常安全,但它几乎让所有人都远离。
设置基本的 Apache 密码检查并不困难,只需要几行 Apache 配置即可。这可以放在 web 目录或服务器配置中的 .htaccess 文件中。以下配置设置了一个非常简单的身份验证屏障。
AuthName "Restricted Area" AuthType Basic AuthUserFile /var/www/passwords/.htpasswd AuthGroupFile /dev/null Require valid-user
上例中的 .htpasswd 文件是存储您的用户信息的地方,因此通常最好将其保存在您的 webroot 之外。.htpasswd 文件可以手动编辑,但添加密码最简单的方法是使用 htpasswd 命令,这将提示输入密码。
htpasswd .htpasswd <username>
完成所有这些设置后,您可能会发现需要允许访问某个目录。这可能是为了测试传入的 API 连接到服务器,否则会被阻止。要允许访问单个目录,您需要创建一个额外的 .htaccess 文件并添加Satify Any配置选项。这将告诉 Apache 允许任何用户访问该目录,从而绕过密码控制。
Satisfy Any
您不需要使用 .htaccess 文件来以这种方式控制目录访问。整个事情可以从主要的 Apache Web 配置或通过虚拟主机配置进行控制。在 Apache 配置文件中,以下配置可用于限制对目录/var/www/protected 中站点的访问。
<Directory /var/www/protected/> AuthName "Restricted Area" AuthType Basic AuthUserFile /var/www/passwords/.htpasswd AuthGroupFile /dev/null Require valid-user </Directory>
通过添加额外的目录声明并包括像这样的满足任何选项,可以取消对单个目录的保护。
<Directory /var/www/protected/unprotected> Satisfy Any </Directory>
我应该提到这是基本身份验证,因此并不完全安全,但它在阻止大多数用户和服务器访问网站方面做得很好。没有使用复杂的蛮力检查机制或密码加密技术。此外,如果您不在服务器上使用 SSL,则可以拦截和提取用户名和密码。