Php 使用salt使用.htpasswd密码进行apache身份验证
我想知道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或“无论什么”,如果我传递了正确的用户名/密码组合,服务器将始终对我进行身份验证 那么,那盐有什么意义呢 谢谢,我
.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身份验证安全。检查此项以供参考谢谢您的回答!