我有一个在 Debian Linux 上运行的 apache Web 服务器,并且我使用 htaccess 保护某个目录。我不知道 .htpasswd 文件是如何创建的。 Apache 文档称,在 2.2.17 版本之前使用 crypt() 加密来加密密码,从 2.2.18 版本开始使用 MD5 加密。如何区分我的 .htpasswd 文件使用哪种加密?
答案1
我不知道 .htpasswd 文件是如何创建的。
您可能正在寻找该htpasswd
命令。阅读手册页了解更多详细信息:
man htpasswd
如何区分我的 .htpasswd 文件使用哪种加密?
你为什么需要知道这一点?我认为如果您只想编辑文件,那么了解这一点并不重要。
我这么问是因为我的印象是他们都很脆弱。
htpasswd
我的机器上的命令可以使用四种不同的密码格式:
# MD5 (default)
martin@martin ~ % htpasswd -m -b -n user pass
user:$apr1$uFKIg3No$ItOJ5p6EEbALwPDYcPDd0.
# crypt
martin@martin ~ % htpasswd -d -b -n user pass
user:qMYdeiUkbhR/o
# SHA
martin@martin ~ % htpasswd -s -b -n user pass
user:{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
# Plain
martin@martin ~ % htpasswd -p -b -n user pass
user:pass
这应该可以帮助您确定您正在使用哪种格式。
我想知道您担心什么...只有当攻击者能够访问该.htpasswd
文件时才需要担心哈希值是否容易受到攻击,这在正常的配置中应该是不太可能的。该.htpasswd
文件应存储在所提供的目录之外,例如 中的某个位置/etc
,Web 服务器可以访问该文件,但不会为其提供服务。
你更应该关心的是HTTP 基本身份验证 以明文形式传输密码,如果你不使用 HTTPS,这肯定是不安全的。因此,如果你担心安全问题,可以考虑切换到HTTP 摘要验证。