我一直在努力升级网站的安全性,其中包括使用 bcrypt 对密码进行哈希处理。到目前为止,php 端的一切都运行良好。我最终使用了 12 轮,在 php 中验证密码大约需要 0.25 秒。
但是,该网站的管理部分使用 .htpasswd 文件来验证希望访问管理工具的用户。该网站每天通过 cron 作业从数据库中获取几次哈希值,并将它们放在 .htpasswd 文件中,供具有管理员访问权限的人使用。Apache 从 2.4 版开始支持 bcrypt,它确实可以工作。问题是我在 php 中使用的相同哈希值大约需要 25-30 秒才能在 Apache 中验证。以前使用 md5 几乎是瞬时的,这表明导致问题的原因是 bcrypt 的设计速度较慢,而不是某种连接或设置问题。
与 php 相比,Apache 在验证 bcrypt 密码方面只是那么慢,还是在内置 bcrypt 延迟之上我在 Apache 中缺少某种节流设置?
编辑:在进一步测试中,速度缓慢肯定是由 bcrypt 哈希中的轮数引起的。我仍然不明白为什么它与在同一台服务器上运行的 php 有什么不同,所以任何关于为什么这是极好的见解,所以正式编辑我的问题,为什么 Apache 慢?