字节一面:HTTPS 会加密 URL 吗?

2023-11-07

有朋友在面试字节,被问到这个问题: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 不会被发现

HTTPS 的应用数据是如何保证完整性的?

TLS 的握手协议我相信大家都很熟悉了,我也写过很多相关的文章了:

  • HTTPS RSA 握手解析

  • HTTPS ECDHE 握手解析

然后对于 HTTPS 是怎么加密 HTTP 数据的,我没有提到过。

然后很多读者以为 HTTP 数据就用对称加密密钥(TLS 握手过程中协商出来的对称加密密钥)加密后就直接发送了,然后就疑惑 HTTP 数据有没有通过摘要算法来保证完整性?

事实上,TLS 在实现上分为握手协议和记录协议两层:

  • TLS 握手协议就是我们说的 TLS 四次握手的过程,负责协商加密算法和生成对称密钥,后续用此密钥来保护应用程序数据(即 HTTP 数据);

  • TLS 记录协议负责保护应用程序数据并验证其完整性和来源,所以对 HTTP 数据加密是使用记录协议;

TLS 记录协议主要负责消息(HTTP 数据)的压缩,加密及数据的认证,过程如下图:

具体过程如下:

  • 首先,消息被分割成多个较短的片段,然后分别对每个片段进行压缩。

  • 接下来,经过压缩的片段会被加上消息认证码(MAC 值,这个是通过哈希算法生成的),这是为了保证完整性,并进行数据的认证。通过附加消息认证码的 MAC 值,可以识别出篡改。与此同时,为了防止重放攻击,在计算消息认证码时,还加上了片段的编码。

  • 再接下来,经过压缩的片段再加上消息认证码会一起通过对称密码进行加密。

  • 最后,上述经过加密的数据再加上由数据类型、版本号、压缩后的长度组成的报头就是最终的加密报文数据。

记录协议完成后,最终的加密报文数据将传递到传输控制协议 (TCP) 层进行传输。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字节一面:HTTPS 会加密 URL 吗? 的相关文章

随机推荐

  • 从0.3开始搭建LeGO-LOAM+VLP雷达+小车实时建图(保姆级教程,小白踩坑日记)

    背景 SLAM小白 因为项目需要花了两天时间编译代码 连接雷达实现了交互 踩了很多坑 简单记录一下 让后面感兴趣的朋友少走点弯路 肯定有很多不专业的 错误的地方 还请大家不吝赐教 噗通 也可以见知乎 https zhuanlan zhihu
  • 实战中绕过disable_functions执行命令

    前言 前几天看到有大佬提到一种小型贷款网站 这种贷款网站从账号的注册到借款的流程都显得很随便 仿佛巴不得直接无条件借钱给你似的 充满 诈骗 的气息 任意文件上传 看着充满暗示的提示语 我们仿照受害者的思路点击借款 随意填写借款金额后 会让我
  • node.js入门笔记(五)——express框架、路由、模板引擎

    node js入门笔记 五 1 特殊依赖 2 express的路由机制 3 express中的路由功能 3 1Router的基本使用 3 2Router的参数传递 3 2Router的请求种类 3 controller的预使用 4 expr
  • 如何解决Dynamics 365的错误:用户身份验证无效,MSIS0006

    关注本人微信和易信公众号 微软动态CRM专家罗勇 回复246或者20170312可方便获取本文 同时可以在第一间得到我发布的最新的博文信息 follow me 我的网站是 www luoyong me 这两天突然访问不了我的部署在Azure
  • 弹性数据库连接池探活策略调研(二)——Druid

    前言 在上一篇文章中 我们介绍了弹性数据库连接失效的背景 并探讨了HikariCP连接池探活策略的相关内容 在本文中 我们将会继续探讨另一个线上常用的连接池 Druid 并为您介绍如何在使用Druid时实现最佳实践的弹性数据库连接池探活策略
  • 每日一题:简单分数统计

    简单分数统计 题目 Daimayuan Online Judge 发现样例输出的是id和成绩 那么就写一个包含这两个变量的结构体来储存它们 另外 再写一个结构体来储存题目名称和分数 目的是使两者联系起来 找到题目名称就能知道对应的分数 AC
  • 学习感悟(基于轻量化卷积神经网络的人脸表情识别方法)

    轻量化卷积神经网络的人脸表情识别方法 文献重点 主要研究方法 感悟 文献重点 主要研究方法 感悟 1 文献重点 面部表情识别是生物信息识别 模式识别 人机交互与人工智能等领域的重要研究课题 深度神经网络的兴起为高精度面部表情识别的研究提供了
  • 解决json object转string,value值存在特殊符号,无法解析问题

    昨天在JSON stringify 转数组的时候 发现一直报错 最终确定原因为string中的空格在html显示的时候 会自动加上 nbsp 知道了问题所在 下面讲解如何解决问题 我们在取数据时 用HTMLDecode2 方法过滤下特殊字符
  • Mysql 中 1062 –Duplicate entry '1' for key 'PRIMARY'

    我遇到的这种问题 就是在数据库中插入数据时 主键重复了 换个新的主键就可以了 比如之前有个主键是1 新添加了一条数据主键也设置成1了
  • easyexcel工具包使用报错:NoClassDeffoundError

    错误日志 easyexcel操作excel pom导包失败 引入外部jar包 处理异常报错 报错原因 easyexcel缺失关键依赖包 解决 修改maven配置文件 加入alibaba镜像地址 重新加载包 问题解决
  • GIS坐标系统

    最新在看GIS的理论知识 坐标系统这块比较抽象 B站上搜到到一个博主的视频 对这块讲解的比较通俗易懂 这里记录一下 地理坐标系统 地理坐标系统是地球表面空间要素的定位参照系统 地理坐标系统是由经度和维度定义的 经度和维度都是用角度量的 经度
  • oracle ebs应付模块表,oracle ebs 11i 数据表大全(总帐、应收、应付等各模块) 免费...

    OWNER OBJECT NAME OBJECT TYPE CREATED PO PO LOCATION T ABLE TABLE PO PO VENDOR S TABLE PO PO LINE LOCA PO PO VENDORS T A
  • 大厂怎么做

    作者 郑东博士 快手 推荐算法技术总监 整理 DataFunTalk 大家好 这里是 NewBeeNLP 快手是中国领先的短视频和直播社区 拥有超过3亿的DAU和丰富的社交数据 快手秉承的价值观是真实 多元 美好 有用 致力于提高每一个用户
  • Hive常用窗口函数

    目录 一 概述 1 定义 2 语法 3 演示数据 二 窗口函数 序列 1 row number 2 rank 3 dense rank 4 ntile n 5 percent rank 三 窗口函数 聚合 1 count 2 sum 3 a
  • 转移文件,从大到小输出shell

    bin bash if d tmp then mkdir tmp fi find size 10k type f iname txt xargs i cp tmp echo gt gt gt gt gt gt gt gt gt gt gt
  • 线程中断是怎么回事

    线程中断相关方法 Thread interrupt 设置线程中断状态 true Thread isInterrupted 判断线程的中断状态 Thread interrupted 返回线程的中断状态 并清除 下次再判断中断状态就是false
  • vue中利用flex布局实现横向时间轴简化

    一 最初版本 简单实现了横向时间轴 1 初次实现效果如图 2 代码如下 div class timeline body bgcolor div class timeline title span class timeline title i
  • layui表格隐藏列的简单实现方法

    需求 渲染表格的时候 比如id在内的一些列是不需要展示给用户看的 但是在操作表格的时候还需要用得到 这就需要隐藏列 的功能 实现效果 页面上不显示 但是能获取到id的值 实现方法 table render id id 可以在这里设置需要隐藏
  • CTF入门学习笔记——Crypto密码(编码)

    文章目录 CTF入门学习笔记 Crypto密码 编码 BASE编码 BASE16 BASE32 BASE64 BASE85 AFCTF 2018 BASE Uuencode编码 SWPUCTF 2021 新生赛 crypto8 Rabbit
  • 字节一面:HTTPS 会加密 URL 吗?

    有朋友在面试字节 被问到这个问题 HTTPS 会加密 URL 吗 答案是 会加密的 因为 URL 的信息都是保存在 HTTP Header 中的 而 HTTPS 是会对 HTTP Header HTTP Body 整个加密的 所以 URL