当密码的结尾发生变化,或者密码文件迁移突然让使用长密码的账户失效时,代理就会接受旧密码。在缩短所有人的密码之前,先检查哈希格式。

Apache 的 htpasswd -d 会选择遗留的 crypt() 哈希。它文档中注明的 DES 限制是八个有效密码字符。这一限制属于该格式,而非 Squid 中适用于密码的通用八字符规则。

NCSA 助手会读取存储的密码表示,并用该助手及其平台支持的格式来校验所提供的值。把一个文件称为“htpasswd 格式”,并不能保证所有历史版本和当前版本的助手都接受每一种 htpasswd 选项所生成的每一种哈希算法。

有意识地迁移表示形式

保留受保护的备份,并确认现有条目使用的格式。在选择替换算法之前,先查阅已安装助手的文档和发行版的构建方式。

然后用真实账户所用的同一助手和同一代理路径,校验一个经批准的小型测试账户。生成器能成功写入文件,并不证明读取它的助手就能校验它。请使用有效字符超出旧边界的测试密码。

更换格式通常需要真实密码或重置密码。如果这段信息从未被保留,遗留哈希就无法转换成完整原始密码的更强哈希。

最后,要把迁移失败与缓存认证区分开。已经通过认证的客户端即使新的校验会失败,也可能继续工作一段时间。规划上线时,既要考虑全新认证,也要考虑现有会话。

不要在缺陷报告里公开密码文件。算法标记和一个合成账户通常比真实用户的哈希提供更有用的证据。

相关文章