提问人:Dan Herbert 提问时间:10/9/2008 最后编辑:PrasadDan Herbert 更新时间:4/24/2023 访问量:319641
HTTPS 标头是否加密?
Are HTTPS headers encrypted?
问:
当通过HTTPS发送数据时,我知道内容是加密的,但是我听到的关于标头是否加密或标头加密了多少的答案不一。
加密了多少 HTTPS 标头?
包括 GET/POST 请求 URL、Cookie 等。
答:
所有 HTTP 标头都已加密†。 这就是为什么虚拟主机上的 SSL 不能很好地工作的原因 - 您需要一个专用的 IP 地址,因为 Host 标头是加密的。
†服务器名称标识 (SNI) 标准意味着,如果使用 TLS,则主机名可能不会加密。此外,无论您是否使用 SNI,TCP 和 IP 标头都不会加密。(如果是,您的数据包将不可路由。
评论
使用 SSL 时,加密是在传输级别进行的,因此在发送请求之前进行加密。
因此,请求中的所有内容都是加密的。
评论
标头是完全加密的。通过网络“明文”传递的唯一信息与SSL设置和D / H密钥交换有关。这种交换经过精心设计,不会向窃听者提供任何有用的信息,一旦发生,所有数据都会被加密。
评论
HTTPS(基于 SSL 的 HTTP)通过 SSL tunel 发送所有 HTTP 内容,因此 HTTP 内容和标头也已加密。
HTTP 版本 1.1 添加了一种特殊的 HTTP 方法 CONNECT - 旨在创建 SSL 隧道,包括必要的协议握手和加密设置。
此后的常规请求都封装在SSL隧道中,包括标头和正文。
评论
老问题的新答案,对不起。我以为我会添加我的 $.02
OP 询问标头是否已加密。
它们是:在运输途中。
它们不是:当不在运输途中时。
因此,浏览器的 URL(在某些情况下还有标题)可以在标头中显示查询字符串(通常包含最敏感的详细信息)和一些详细信息;浏览器知道一些标头信息(内容类型、Unicode 等);浏览器历史记录、密码管理、收藏夹/书签和缓存页面都将包含查询字符串。远程端的服务器日志还可以包含查询字符串以及一些内容详细信息。
此外,URL 并不总是安全的:域、协议和端口是可见的 - 否则路由器不知道将您的请求发送到哪里。
此外,如果你有一个HTTP代理,代理服务器知道地址,通常他们不知道完整的查询字符串。
因此,如果数据正在移动,它通常会受到保护。如果它不在传输中,则未加密。
不是吹毛求疵,但最后的数据也是解密的,可以随意解析、读取、保存、转发或丢弃。而且,任何一端的恶意软件都可以拍摄进入(或退出)SSL协议的数据快照 - 例如HTTPS内部页面内的(坏)Javascript,它可以偷偷地对日志记录网站进行http(或https)调用(因为对本地硬盘的访问通常受到限制且无用)。
此外,Cookie 也不会在 HTTPS 协议下加密。想要将敏感数据存储在 cookie(或其他任何地方)的开发人员需要使用自己的加密机制。
至于缓存,大多数现代浏览器不会缓存HTTPS页面,但这一事实不是由HTTPS协议定义的,它完全取决于浏览器的开发人员,以确保不缓存通过HTTPS接收的页面。
因此,如果您担心数据包嗅探,您可能没问题。但是,如果您担心恶意软件或有人窃听您的历史记录、书签、cookie 或缓存,那么您还没有出水。
评论
URL 也是加密的,您实际上只有 IP、端口和 SNI(如果是 SNI)主机名,这些都是未加密的。
评论
是的,标头是加密的。它写在这里。
HTTPS 消息中的所有内容都经过加密,包括标头和请求/响应负载。
评论
要了解哪些是加密的,哪些是未加密的,您需要知道 SSL/TLS 是传输层和应用层之间的层。
在HTTPS的情况下,HTTP是应用层,TCP是传输层。这意味着,SSL 级别以下的所有标头都是未加密的。此外,SSL 本身可能会暴露数据。公开的数据包括(对于每个图层的 Header):
注意:其他数据也可能被公开,但这些数据肯定会被公开。
苹果:
- 源MAC地址(当前跳)
- 目标MAC地址(下一跳)
IP(假设 IPv4):
- 目标 IP 地址
- 源 IP 地址
- IP 选项(如果设置)
- 服务类型(TOS)
- 如果 TTL 设置为 64,则当前数据包传递的跃点数
TCP协议:
- 源端口
- 目标端口
- TCP 选项
从理论上讲,您可以加密 TCP-Headers,但这很难实现。
SSL证书:
- 主机名(如果正在使用 SNI)
通常,浏览器不会立即使用 HTTPS 通过 IP 连接到目标主机,还有一些早期的请求,可能会暴露以下信息(如果您的客户端不是浏览器,它的行为可能会有所不同,但 DNS 请求很常见):
DNS: 发送此请求是为了获取服务器的正确 IP 地址。它将包括主机名,其结果将包括属于服务器的所有 IP 地址。
HTTP协议: 对服务器的第一个请求。浏览器只有在指示的情况下才会使用 SSL/TLS,首先使用未加密的 HTTP。通常,这将导致重定向到 seucre 站点。但是,此处可能已经包含了一些标头:
- User-Agent(客户端规范)
- 主机(主机名)
- Accept-Language(用户语言)
评论