如果答案很明显,请原谅,我只是有点好奇,无法在其他地方找到答案。
我习惯于看到身份验证服务器使用简单的 SHA-1 或 SHA-256 来验证凭证,但现在的最佳做法通常是使用 bcrypt 进行凭证散列。
问题在于,bcrypt 的设计目标是使用大量 CPU 和/或内存来限制暴力破解算法的有效性。对于单次登录来说,这很容易,但当涉及数百或数千次登录时,服务器管理员是否会投入大量硬件来解决问题,还是会调整 bcrypt 参数以确保用户合理的登录时间?
答案1
您不能将 bcrypt 参数调得太低。参数应该设置为至少约 250 毫秒来验证密码。
这意味着你将要每次登录都会消耗 100% 的 CPU 核心,持续 250 毫秒。
所以:
- 单核情况下,每秒只能登录 4 个人
- 双核:每秒 8 人
- 四核:每秒16人
幸运的是,一旦有人登录,你就会把身份验证 cookie。如果您操作正确,并且身份验证 cookie 在 50 年内不会过期,那么您就永远不需要再次验证他们的密码。