HTTPS 会加密 URL 吗?
作者:小林coding
计算机八股文网站:https://xiaolincoding.com
大家好,我是小林,昨晚有位读者又给我送素材来了。
他在面试字节,被问到这个问题:HTTPS 会加密 URL 吗?
答案是,会加密的。
因为 URL 的信息都是保存在 HTTP Header 中的,而 HTTPS 是会对 HTTP Header + HTTP Body 整个加密的,所以 URL 自然是会被加密的。
下图是 HTTP/1.1 的请求头部,可以看到是包含 URL 信息的。
对应的实际的 HTTP/1.1 的请求头部:
HTTP/1.1 请求的第一行包含请求方法和路径。HTTP/2 用一系列伪头部(pseudo-header)替换了请求行,这五个伪头部很容易识别,因为它们在名称的开头用了一个冒号来表示。
比如请求方法和路径伪头字段如下:
- ":method" 伪头字段包含了 HTTP 方法;
- ":path" 伪头字段包含目标 URL 的路径和查询部分;
如下图:
上图是我浏览器 F12 开发者工具查看的信息,浏览器显示信息是已经解密后的信息,所以不要误以为 URL 没有加密。
如果你用抓包工具,抓包 HTTPS 的数据的话,你是什么都看不到的,如下图,只会显示“Application Data”,表示这是一个已经加密的 HTTP 应用数据。
HTTPS 可以看到域名吗?
再问大家一个问题,HTTPS 可以看到请求的域名吗?
从上面我们知道,HTTPS 是已经把 HTTP Header + HTTP Body 整个加密的,所以我们是无法从加密的 HTTP 数据中获取请求的域名的。
但是我们可以在 TLS 握手过程中看到域名信息。
比如下图,TLS 第一次握手的 “Client Hello” 消息中,有个 server name 字段,它就是请求的域名地址。
所以,用了 HTTPS 也不能以为偷偷在公司上某 hub 不会被发现
更多网络文章
- 网络基础篇
- HTTP 篇
- TCP 篇
- TCP 三次握手与四次挥手面试题
- TCP 重传、滑动窗口、流量控制、拥塞控制
- TCP 实战抓包分析
- TCP 半连接队列和全连接队列
- 如何优化 TCP?
- 如何理解是 TCP 面向字节流协议?
- 为什么 TCP 每次建立连接时,初始化序列号都要不一样呢?
- SYN 报文什么时候情况下会被丢弃?
- 四次挥手中收到乱序的 FIN 包会如何处理?
- 在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?
- TCP 连接,一端断电和进程崩溃有什么区别?
- 拔掉网线后, 原本的 TCP 连接还存在吗?
- tcp_tw_reuse 为什么默认是关闭的?
- HTTPS 中 TLS 和 TCP 能同时握手吗?
- TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?
- TCP 有什么缺陷?
- 如何基于 UDP 协议实现可靠传输?
- TCP 和 UDP 可以使用同一个端口吗?
- 服务端没有 listen,客户端发起连接建立,会发生什么?
- 没有 accpet,可以建立 TCP 连接吗?
- 用了 TCP 协议,数据一定不会丢吗?
- IP 篇
- 学习心得