如何区分htpasswd的加密算法?

ala*_*laf 3 password htaccess apache-httpd

我有一个在 Debian Linux 上运行的 apache Web 服务器,我使用 htaccess 保护某个目录。我不知道 .htpasswd 文件是如何创建的。Apache 文档说 crypt() 加密用于加密密码,直到版本 2.2.17 和 MD5 加密从 2.2.18 开始使用。如何区分我的 .htpasswd 文件使用哪种加密?

Mar*_*ich 5

我不知道 .htpasswd 文件是如何创建的。

您可能正在寻找htpasswd命令。阅读手册页了解更多详情:

man htpasswd
Run Code Online (Sandbox Code Playgroud)

如何区分我的 .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
Run Code Online (Sandbox Code Playgroud)

这应该可以帮助您确定您使用的是哪种格式。

我想知道你关心的是什么......哈希是否易受攻击只有在攻击者能够访问.htpasswd文件时才值得关注,这在合理的配置中应该是不太可能的。该.htpasswd文件应该存储在所提供的目录之外,例如在/etc中的某个地方,Web 服务器可以访问它,但不会提供它。

您应该更关心的是HTTP Basic Auth 以明文形式传输密码,如果您不使用 HTTPS,这绝对是不安全的。因此,如果您担心安全性,请考虑切换到HTTP Digest Auth