HTTPS标头是否加密?

当通过HTTPS发送数据时,我知道内容是加密的,但是我听到了关于标头是否加密或标头加密多少的混合答案。

多少HTTPS标头加密?

包括GET/POST请求URL、Cookie等。

296311 次浏览

所有HTTP标头都经过加密。 这就是为什么vhost上的SSL不能很好地工作-您需要一个专用的IP地址,因为Host标头是加密的。

服务器名称标识(SNI)标准意味着如果您使用TLS,主机名可能不会加密。此外,无论您是否使用SNI,TCP和IP标头都不会加密。(如果是,您的数据包将无法路由。)

使用SSL,加密是在传输级别,因此它在发送请求之前发生。

所以请求中的所有内容都是加密的。

报头是完全加密的。唯一通过网络“透明”的信息与SSL设置和D/H密钥交换有关。这种交换经过精心设计,不会向窃听者提供任何有用的信息,一旦发生,所有数据都将被加密。

HTTPS(超文本传输安全协议)通过SSL Tunel发送所有HTTP内容,因此HTTP内容和标头也被加密。

HTTP 1.1版添加了一个特殊的HTTP方法CONNECT-旨在创建SSL隧道,包括必要的协议握手和加密设置。
之后的常规请求都被包裹在SSL隧道中发送,包括标头和主体。

老问题的新答案抱歉我想我应该加上0.02美元

OP询问标题是否已加密。

它们是:在运输途中。

它们不是:当不在运输中时。

因此,您的浏览器的URL(在某些情况下,还有标题)可以在标头中显示查询字符串(通常包含最敏感的详细信息)和一些详细信息;浏览器知道一些标头信息(内容类型、Unicode等);浏览器历史记录、密码管理、收藏夹/书签和缓存页面都将包含查询字符串。远程端的服务器日志也可以包含查询字符串以及一些内容详细信息。

此外,URL并不总是安全的:域、协议和端口是可见的——否则路由器不知道将您的请求发送到哪里。

此外,如果你有一个HTTP代理,代理服务器知道地址,通常他们不知道完整的查询字符串。

因此,如果数据正在移动,它通常会受到保护。如果它不在传输中,它就不会加密。

不要挑剔,但最后的数据也会被解密,并且可以随意解析、读取、保存、转发或丢弃。而且,任何一端的恶意软件都可以对进入(或退出)SSL协议的数据进行快照-例如HTTPS内页面中的(坏的)Javascript,它可以偷偷地对日志网站进行超文本传输协议(或https)调用(因为对本地硬盘的访问通常受到限制并且没有用)。

此外,cookie也不是在HTTPS协议下加密的。想要将敏感数据存储在cookie(或其他任何地方)中的开发人员需要使用自己的加密机制。

至于缓存,大多数现代浏览器不会缓存HTTPS页面,但这一事实并未由HTTPS协议定义,它完全取决于浏览器的开发人员确保不缓存通过HTTPS接收的页面。

所以如果你担心数据包嗅探,你可能没事。但如果你担心恶意软件或有人翻阅你的历史记录、书签、cookie或缓存,你还没有脱离困境。

URL也是加密的,你真的只有IP,端口和SNI,未加密的主机名。

是的,标题是加密的。它写为这里

HTTPS消息中的所有内容都是加密的,包括标头和请求/响应负载。

要了解什么是加密的,什么不是,您需要知道SSL/TLS是传输层和应用层之间的层。

在HTTPS的情况下,HTTP是应用层,TCP是传输层。这意味着,SSL级别以下的所有标头都是未加密的。此外,SSL本身可能会暴露数据。暴露的数据包括(对于每个层的标头):

注意:其他数据也可能被暴露,但此数据肯定会被暴露。

MAC:

  1. 源MAC地址(当前跳数)
  2. 目标MAC地址(下一跳)

IP(假设IPv4):

  1. 目标IP地址
  2. 源IP地址
  3. IP选项(如果设置)
  4. 服务类型(TOS)
  5. 当前数据包通过的跳数,如果TTL设置为64

tcp:

  1. 源端口
  2. 目的地端口
  3. tc-选项

理论上,您可以加密TCP标头,但这很难实现。

SSL:

  1. 主机名(如果使用SNI)

通常,浏览器不会立即使用HTTPS通过IP连接到目标主机,还有一些早期的请求,这可能会暴露以下信息(如果您的客户端不是浏览器,它的行为可能会有所不同,但DNS请求很常见):

DNS: 发送此请求以获取服务器的正确IP地址。它将包括主机名,其结果将包括属于服务器的所有IP地址。

HTTP: 对您的服务器的第一个请求。浏览器只会在被指示时使用SSL/TLS,首先使用未加密的HTTP。通常,这将导致重定向到seucre站点。但是,这里可能已经包含了一些标头:

  1. User-Agent(客户端规范)
  2. 主机名
  3. 接受语言(用户语言)