【发布时间】:2009-05-15 14:35:17
【问题描述】:
我想知道使用 .htaccess 文件(使用公共 apache webroot 之外的 .htpasswd 文件)保护 web 目录是否是保护目录(及其内容)的安全方法。
有人能解释一下这种保护的注意事项吗?
【问题讨论】:
标签: security authentication .htaccess .htpasswd
我想知道使用 .htaccess 文件(使用公共 apache webroot 之外的 .htpasswd 文件)保护 web 目录是否是保护目录(及其内容)的安全方法。
有人能解释一下这种保护的注意事项吗?
【问题讨论】:
标签: security authentication .htaccess .htpasswd
如果您使用标准的 http 协议,身份验证将不受保护地通过网络。这不被认为是安全的,因为有人可能会嗅到密码。
如果您限制对 https 的访问,这是非常安全的。这意味着为 ssl 加密的 http 流量(端口 433,浏览器地址行中的 https://)安装和启用 apache 模块,并在端口 80 上禁用此目录的标准 http 流量。用户名和密码将为 ssl加密。请务必选择一个好的密码(足够长且足够复杂,无法猜测或暴力破解)。
Apache 配置可能很棘手,因此请务必保持简单并针对可能出现的错误进行测试。
如果您了解并控制它,将访问限制配置从 .htaccess 文件移动到主 apache 配置文件可能是一个好主意。您也可以更轻松地将其保存在 .htacces 文件中。而“简单”可以更安全。以您感觉简单、安全、易于维护和记忆的方式进行操作。
这是一个简单的设置,可增强安全性并防止事故发生:
如果您在受保护目录所在的机器上配置了 php 和 email,您可以编写一个简单的警报脚本。只是一个 php 文件“alarm.php”,其中包含向您发送电子邮件的 php 邮件功能,告诉您 htaccess 保护不起作用。
如果您的域和目录路径是“http://mybox.example.com/secretdir/alarm.php”,您可以在另一台机器上的浏览器中输入它,只要“打开”htaccess,您就应该收到该邮件。如果它受到保护,您可以输入用户名和密码,您也会收到邮件。
要为此发出自动警报,您可以使用不同的 unix 框,每隔 15 分钟左右尝试获取此 URL。 crontab 的行:
*/15 * * * * user1 wget http://mybox.example.com/secretdir/alarm.php
user1是这台机器上允许运行wget的用户,必须安装wget。
您可以禁用 htaccess 保护作为测试,并且应该每 15 分钟收到一次邮件。
根据我的经验,当您更改某些内容但您不知道时,您认为受保护的目录会失去其保护,这是一个常见的安全漏洞,这样您就会收到警告您的电子邮件。
【讨论】:
据我所知,如果 htaccess 被拦截(例如,您从运行网络嗅探器的网吧登录),htaccess 很容易被破解。 As far as I know、Digest authentication 有助于解决这个问题。
【讨论】:
.htaccess 是在您无权访问主配置文件/没有 root 访问权的情况下,如何对 Apache HTTPD 提供的资源进行每个目录配置更改的非常标准的方法。
如果您可以访问主配置,则将所有配置(包括身份验证)放在一个中心位置(即使它被拆分为多个文件)会容易得多,这样就不容易忽略它。根据我的经验,我可以告诉您,忘记 .htaccess 文件只是时间问题。
官方文档多次提到应尽可能避免使用.htaccess 文件。
如果使用 .htaccess 是您唯一的选择,请确保您遵循与主要 HTTPD 配置一样的一般安全预防措施,即防止未经授权的用户读取它们,服务器可以读取文件,确保您始终禁用目录列表确保密码以加密/哈希格式等存储。
欲了解更多信息,请查看Apache htaccess tutorial
【讨论】:
.htaccess 文件非常方便,但是......这不会保护您免受他人利用您的代码并读取他想要的任何文件。如果您的网站(即使是一个小脚本)将被利用,.htaccess 或其他解决方案都不会保护您,因为黑客将获得执行脚本的用户的权限(通常是 www-data)。
这在 CGI 中尤其痛苦,但其他脚本也被黑客入侵。
【讨论】: