HTTP 和 HTTPS 详解(原理 + 区别 + 面试重点)

一、HTTP 是什么

  1. 定义

    HTTP(HyperText Transfer Protocol)是超文本传输协议,用于浏览器和服务器之间的数据通信。

  2. 特点

    (1)无状态:每次请求互不关联

    (2)明文传输:数据不加密

    (3)基于 TCP 协议

  3. 工作流程

客户端发送请求,服务器返回响应,例如:

GET /index.html HTTP/1.1

Host: example.com


二、HTTP 的问题

  1. 数据是明文

    传输过程中可以被直接读取,例如账号密码

  2. 数据容易被篡改

    中间人可以修改请求或响应内容

  3. 无法验证身份

    客户端无法确认服务器是否真实


三、HTTPS 是什么

  1. 定义

    HTTPS 是在 HTTP 基础上加入 SSL/TLS 加密层的安全协议

  2. 本质

    HTTPS = HTTP + 加密 + 认证 + 完整性校验


四、HTTPS 的核心原理

  1. 加密机制

(1)对称加密

使用同一个密钥加密和解密,速度快,但密钥传输不安全

(2)非对称加密

使用公钥和私钥,公钥加密,私钥解密,解决密钥传输问题

(3)混合加密(重点)

HTTPS 实际采用混合加密

握手阶段使用非对称加密

数据传输阶段使用对称加密


  1. 身份认证

通过数字证书验证服务器身份

证书由 CA(证书颁发机构)签发


  1. 完整性校验

使用摘要算法(如 SHA)确保数据未被篡改


五、HTTPS 握手流程(重点)

  1. 客户端发起 HTTPS 请求

  2. 服务器返回数字证书(包含公钥)

  3. 客户端验证证书是否合法

  4. 客户端生成随机密钥

  5. 使用公钥加密该密钥并发送给服务器

  6. 服务器用私钥解密得到密钥

  7. 双方使用该密钥进行对称加密通信

一句话总结:先用非对称加密交换密钥,再用对称加密传输数据


六、HTTP 和 HTTPS 的区别

  1. 安全性

    HTTP 不安全,HTTPS 安全

  2. 是否加密

    HTTP 明文传输,HTTPS 加密传输

  3. 端口

    HTTP 使用 80 端口,HTTPS 使用 443 端口

  4. 性能

    HTTP 稍快,HTTPS 略慢(实际差异很小)

  5. 证书

    HTTP 不需要证书,HTTPS 需要证书

  6. SEO

    HTTPS 更有利于搜索排名


七、HTTPS 的优缺点

  1. 优点

(1)数据加密,防止窃听

(2)验证服务器身份

(3)防止数据篡改

(4)提升网站可信度

  1. 缺点

(1)需要申请证书

(2)握手过程略有性能开销

(3)部署比 HTTP 更复杂


八、HTTP/2 与 HTTPS

  1. HTTP/2 特点

(1)多路复用

(2)头部压缩

(3)服务器推送

  1. 关系

主流浏览器中 HTTP/2 基本都运行在 HTTPS 上


九、常见安全问题

  1. 中间人攻击

    攻击者拦截通信并伪造服务器

HTTPS 通过证书和加密进行防护

  1. 抓包攻击

    HTTP 可以直接看到数据

    HTTPS 数据是加密的

  2. DNS 劫持

    需要结合 HSTS 等机制防护


十、开发中的最佳实践

  1. 全站使用 HTTPS

  2. 配置 HSTS 强制使用 HTTPS

Strict-Transport-Security: max-age=31536000

  1. 禁用不安全协议

    如 SSL 3.0

  2. Cookie 设置安全属性

Secure 和 HttpOnly

  1. 配合认证机制

    HTTPS 不能替代登录认证(如 Token、Session)


十一、面试高频问题

  1. HTTP 和 HTTPS 的核心区别

    是否加密,是否安全,是否需要证书

  2. HTTPS 为什么安全

    因为使用混合加密、数字证书和完整性校验

  3. HTTPS 握手过程

    重点记住七个步骤

  4. 为什么不用全程非对称加密

    因为性能太低

  5. HTTPS 一定安全吗

    不一定,例如用户忽略证书警告或终端被攻击


十二、总结

  1. HTTP 是明文传输协议,不安全

  2. HTTPS 在 HTTP 基础上增加了加密和认证机制

  3. HTTPS 通过混合加密解决了安全与性能问题

  4. 在现代开发中,应优先使用 HTTP。

相关推荐
Moment1 小时前
MiniMax 发布 M2.7,Agent 开始走向自我进化
前端·后端·面试
发现一只大呆瓜1 小时前
Vue-Vue Router核心原理+实战用法全解析
前端·vue.js·面试
发现一只大呆瓜2 小时前
性能优化:CDN 缓存加速与调度原理
前端·javascript·面试
xlp666hub2 小时前
【Linux驱动实战】:最简单的内核模块
linux·面试
一直都在5722 小时前
HTTPS 加密传输原理
网络协议·http·https
_饭团2 小时前
指针核心知识:5篇系统梳理3
c语言·数据结构·算法·leetcode·面试·学习方法·改行学it
虾..2 小时前
Linux HTTP服务器
linux·服务器·http
程序员阿耶3 小时前
【前端面试知识点】CSS contain 属性如何用于性能优化?它有哪些可选值及作用?
前端·面试
星辰_mya4 小时前
Redlock 算法:是分布式锁的“圣杯”还是“鸡肋”
jvm·redis·分布式·面试·redlock