是否可以强制浏览器在启用 ssl (https) 的网站中使用 http?

信息安全 tls http 饼干 本地存储
2021-08-27 06:02:39

我正在对将会话 ID 存储在本地存储中而不是将其存储在 cookie 中进行安全研究。我了解无法将本地存储中的值标记为 HttpOnly,因此它可能容易受到 XSS 攻击。由于所有输入都经过正确验证,我没有这个问题。

但我发现的另一个问题是在传输到服务器时篡改数据。由于我的本地存储会话 ID 不能标记在 下Secure,因此它有可能通过未加密的通道 (HTTP) 传输。为了缓解这种情况,我想知道是否可以通过受 SSL 保护的 HTTP 访问页面。

3个回答

无法通过 HTTP 访问使用 SSL(或 TLS)保护的页面,因为这意味着该页面不再受到保护。

如果我重新表述这个问题:是否可以通过 HTTP 访问 HTTPS 安全网站的特定页面,那么我会说这是可能的,但非常不安全。此外,带有会话 ID 的 cookie 可能必须与每个页面请求一起发送,因为您需要跨多个页面跟踪会话。这意味着您需要通过 HTTP 为几乎每个页面提供服务,从而使您的网站不安全。

如果您只需要一个页面上的会话 cookie,您可以告诉客户端对该页面执行 HTTP 请求,然后该请求将与所有未设置“安全”标志的 cookie 一起发送。但是,这意味着所有这些 cookie 都容易受到 MITM 攻击,并且可以被任何监听您通信的人读取。

我的建议:永远不要有意识地通过 HTTP 提供 HTTPS 站点的页面。

因此,您需要问自己的问题是 为什么我的会话 ID 不能被标记为仅安全是因为懒惰,还是有其他原因导致您无法将此 cookie 标记为安全?


顺便说一句,要强制浏览器始终对网站使用 HTTPS(而不是依赖 302 重定向来访问 HTTPS 版本),可以使用 HTTP Strict Transport Security。请参阅OWASP了解更多信息。

是的,当然是。

  • 最简单的例子是用户无意识地或自愿地以 http://... 的形式提交请求。
  • (可能是恶意的)Web 服务器也可以做到这一点,只需发送 30 倍重定向或所有其他超链接指向 http:// 而不是 https:// 的页面

后一个示例:连接到https://www.amazon.com,您将登陆一个没有任何 SSL 保护的页面。

是的

如果 TLS/SSL 协商失败,则浏览器回退到 HTTP (同时停留在 HTTPS 端口和 URL 上),与回退到 SSL3 的方式相同。
我在浏览 GitHub 时截取了这张截图第一个陈述的证明