当通过 HTTPS 发送数据时,我知道内容是加密的,但是我听到关于标头是否加密或标头的加密程度的混合答案。
有多少 HTTPS 标头被加密?
包括 GET/POST 请求 URL、Cookie 等。
当通过 HTTPS 发送数据时,我知道内容是加密的,但是我听到关于标头是否加密或标头的加密程度的混合答案。
有多少 HTTPS 标头被加密?
包括 GET/POST 请求 URL、Cookie 等。
全部加密†</sup> - 所有标题。这就是为什么虚拟主机上的 SSL 不能很好地工作的原因——你需要一个专用的 IP 地址,因为主机头是加密的。
†</sup>服务器名称识别 (SNI) 标准意味着如果您使用 TLS,主机名可能不会被加密。此外,无论您是否使用 SNI,TCP 和 IP 标头都不会加密。(如果是,您的数据包将无法路由。)
标头是完全加密的。通过网络“明文”传输的唯一信息与 SSL 设置和 D/H 密钥交换有关。这种交换经过精心设计,不会向窃听者提供任何有用的信息,一旦发生,所有数据都会被加密。
旧问题的新答案,对不起。我想我会添加我的 $.02
OP 询问标头是否已加密。
它们是:在运输中。
它们不是:不在运输途中。
因此,您的浏览器的 URL(在某些情况下还包括标题)可以在标题中显示查询字符串(通常包含最敏感的详细信息)和一些详细信息;浏览器知道一些标头信息(内容类型、unicode 等);浏览器历史记录、密码管理、收藏夹/书签和缓存页面都将包含查询字符串。远程端的服务器日志也可以包含查询字符串以及一些内容细节。
此外,URL 并不总是安全的:域、协议和端口都是可见的——否则路由器不知道将您的请求发送到哪里。
此外,如果你有一个 HTTP 代理,代理服务器知道地址,通常他们不知道完整的查询字符串。
因此,如果数据在移动,它通常会受到保护。如果它不在传输中,则它没有加密。
不是挑剔,但最后的数据也是解密的,可以随意解析、读取、保存、转发或丢弃。而且,任何一端的恶意软件都可以对进入(或退出)SSL 协议的数据进行快照,例如 HTTPS 内页面内的(坏)Javascript,它可以偷偷地对日志网站进行 http(或 https)调用(因为访问本地硬盘驱动器)通常受到限制且无用)。
此外,cookie 也没有在 HTTPS 协议下加密。想要将敏感数据存储在 cookie(或其他任何地方)中的开发人员需要使用自己的加密机制。
至于缓存,大部分现代浏览器都不会缓存HTTPS页面,但这并不是HTTPS协议定义的,完全取决于浏览器的开发者确保不缓存通过HTTPS接收的页面。
所以如果你担心数据包嗅探,你可能没问题。但是,如果您担心恶意软件或有人翻阅您的历史记录、书签、cookie 或缓存,那么您还没有脱离困境。
HTTP 1.1 版添加了一种特殊的 HTTP 方法 CONNECT - 旨在创建 SSL 隧道,包括必要的协议握手和加密设置。
此后的常规请求都被包装在 SSL 隧道、标头和正文中发送。
使用 SSL,加密是在传输级别,因此它发生在发送请求之前。
所以请求中的所有内容都是加密的。
HTTPS(基于 SSL 的 HTTP)通过 SSL 隧道发送所有 HTTP 内容,因此 HTTP 内容和标头也被加密。
是的,标头是加密的。它写在这里。
HTTPS 消息中的所有内容都经过加密,包括标头和请求/响应负载。
URL也被加密了,你真的只有IP、端口,如果是SNI,还有未加密的主机名。