Php 使用salt使用.htpasswd密码进行apache身份验证

Php 使用salt使用.htpasswd密码进行apache身份验证,php,apache,authentication,salt,.htpasswd,Php,Apache,Authentication,Salt,.htpasswd,我想知道Apache服务器如何使用.htpasswd 我在文件夹中有一个.htpasswd文件。.htpasswd内容由php生成,密码由crypt()函数加密,如下所示: crypt($password,mb_substr($password,0,2)); 问题是,无论我使用哪种salt:mb\u substr($password,0,2)或my\u private\u salt或“无论什么”,如果我传递了正确的用户名/密码组合,服务器将始终对我进行身份验证 那么,那盐有什么意义呢 谢谢,我

我想知道Apache服务器如何使用
.htpasswd

我在文件夹中有一个
.htpasswd
文件。
.htpasswd
内容由php生成,密码由
crypt()
函数加密,如下所示:

crypt($password,mb_substr($password,0,2));
问题是,无论我使用哪种salt:
mb\u substr($password,0,2)
my\u private\u salt
或“无论什么”,如果我传递了正确的用户名/密码组合,服务器将始终对我进行身份验证

那么,那盐有什么意义呢

谢谢,我找到了答案

php crypt()函数生成一个唯一的散列。如果未指定盐,则将生成随机盐

一个大问题是,只有密码中的前8个字符将用于生成哈希,而salt中只有两个字符

结果哈希将由salt+另外11个字符组成

例如: 如果我们这样做:crypt('1234567','12') 结果将是“120QBxD1IX.Cw”。 注意散列中的前两个字符(12)

这是Apache服务器如何知道如何加密请求并将其与.htpasswd文件中保存的哈希进行比较的方法


有关更好的解释,请参见此链接:

这会使坏人更难解密密码。您应该使用随机salt。salt用于保护对
.htaccess
的未经授权访问,而不是HTTP身份验证安全。检查此项以供参考谢谢您的回答!