我对基本身份验证的理解是它在请求标头中存储了用户名:密码对,然后在服务器的后续响应中返回。
问题:
浏览器使用哪种哈希算法来创建初始用户名:密码哈希值,发送到服务器进行验证?
如果服务器上的每个请求都通过验证运行用户名:密码对,或者仅仅看到Authorization标头中有什么内容并接受,因为它在那里,那么会话已经被验证了吗?
(与2有关)是否可以在Authorization标头中插入任何旧字符串,从而诱使服务器认为会话已经过身份验证?
我在理论上知道我们不应该使用Basic Auth,但在某些情况下它是有道理的。
非常感谢
答案 0 :(得分:2)
不会发生散列,凭据以纯文本形式出现,它们只是基于64位编码以适合标题允许的字符范围。每个请求必须包含服务器期望经过身份验证的用户的每个资源的此标头。
因此,当您捕获请求时,您可以使用标头欺骗请求作为发出初始请求的用户。
HTTPS可以防止窃听,但这并不会使它更加安全。另请参阅Is BASIC-Auth secure if done over HTTPS?。