密码哈希值存储为PBKDF2,512位,16384轮。这需要花时间在我的小型服务器上。用户通过SSL / TLS授权HTTP基本身份验证。使用此设置,每个请求都需要计算将负载放在服务器上的哈希值。
当前解决方案:首次成功登录后,我将会话cookie存储在客户端。
Pro:减少哈希计算时间的最小复杂性,仍适用于不存储cookie的客户端
缺点:不接受cookie的客户端仍会产生负载。
其他缓解方法: - 弱化密码哈希(感觉不对) - 实现自己/其他身份验证而不是基本身份验证(哪一个?增加了复杂性)
优先级: 安全第一,确保访问管理/监控。 然后服务器加载。
如何减轻密码哈希负载?如何不牺牲安全?没有安全通道(共享密钥),是否有替代身份验证的方法?
答案 0 :(得分:1)
当前解决方案:首次成功登录后,我将会话cookie存储在客户端。
这是典型的解决方案 - 使用实际存储的会话或签名用户+时间戳令牌(HMAC比bcrypt更快验证)。
它还解决了HTTP Auth仅针对与请求auth的第一页相同的目录路径下的页面以及不再重新发送auth标头的疯狂浏览器的问题,直到每个单独提示401为止请求。
缺点:不接受cookie的客户端仍会产生负载。
根本不接受cookie的客户是相对罕见的,几乎所有其他需要登录的网站都会中断,因此对于普通情况,您通常应该没问题。
实施自己的/其他身份验证而不是基本身份验证(哪一个增加了复杂性)
如果您决定不依赖cookie,我可以考虑使用本机浏览器支持的唯一其他机制是Digest Auth(并不能真正解决问题,因为它仍然是基于密码的)和HTTPS客户端证书(可能是一个可接受/方便的选择,取决于你的用户群是谁。