HTTPS 基本身份验证凭据是否与其 HTTP 副本共享?
Are HTTPS basic auth credentials shared with its HTTP counterpart?
想象一下以下场景:
- 用户前往http://example.com
- 服务器使用临时重定向(状态 302)重定向到安全版本 https://example.com
- https://example.com 响应 HTTP 基本身份验证质询(状态 401)
- 用户成功提供username/password并获得访问权限(浏览器将这些凭据存储在其内部缓存中)
如果用户跟随 link 进入不安全版本的网站 (http://example.com) 会怎样?
凭据是否会因明文 HTTP 请求而暴露?
浏览器是否将 HTTP 凭据和 HTTPS 凭据存储在单独的“存储桶”中?
从技术上讲,这两个 URL 属于不同的来源,因此不应共享凭据。但是我在网上找不到任何证实。
Are HTTP credentials and HTTPS credentials stored in separate "buckets" by the browser?
是的,这些桶的正式名称是 'origins'。 HTML、Javacript、HTTP 和 URI 等规范谈论起源,但桶实际上是 URI 减去路径。
所以对于 https://example.org/foo/bar
,原点是 https://example.org
所以这包括:
- 方案 (
http
/ https
).
- 域名
- 港口
因此在您的示例中,2 个相关的来源/桶是 http://example.com
和 https://example.com
,它们是分开的。
想象一下以下场景:
- 用户前往http://example.com
- 服务器使用临时重定向(状态 302)重定向到安全版本 https://example.com
- https://example.com 响应 HTTP 基本身份验证质询(状态 401)
- 用户成功提供username/password并获得访问权限(浏览器将这些凭据存储在其内部缓存中)
如果用户跟随 link 进入不安全版本的网站 (http://example.com) 会怎样?
凭据是否会因明文 HTTP 请求而暴露?
浏览器是否将 HTTP 凭据和 HTTPS 凭据存储在单独的“存储桶”中?
从技术上讲,这两个 URL 属于不同的来源,因此不应共享凭据。但是我在网上找不到任何证实。
Are HTTP credentials and HTTPS credentials stored in separate "buckets" by the browser?
是的,这些桶的正式名称是 'origins'。 HTML、Javacript、HTTP 和 URI 等规范谈论起源,但桶实际上是 URI 减去路径。
所以对于 https://example.org/foo/bar
,原点是 https://example.org
所以这包括:
- 方案 (
http
/https
). - 域名
- 港口
因此在您的示例中,2 个相关的来源/桶是 http://example.com
和 https://example.com
,它们是分开的。