一、HTTP 是什么
-
定义
HTTP(HyperText Transfer Protocol)是超文本传输协议,用于浏览器和服务器之间的数据通信。
-
特点
(1)无状态:每次请求互不关联
(2)明文传输:数据不加密
(3)基于 TCP 协议
-
工作流程
客户端发送请求,服务器返回响应,例如:
GET /index.html HTTP/1.1
Host: example.com
二、HTTP 的问题
-
数据是明文
传输过程中可以被直接读取,例如账号密码
-
数据容易被篡改
中间人可以修改请求或响应内容
-
无法验证身份
客户端无法确认服务器是否真实
三、HTTPS 是什么
-
定义
HTTPS 是在 HTTP 基础上加入 SSL/TLS 加密层的安全协议
-
本质
HTTPS = HTTP + 加密 + 认证 + 完整性校验
四、HTTPS 的核心原理
- 加密机制
(1)对称加密
使用同一个密钥加密和解密,速度快,但密钥传输不安全
(2)非对称加密
使用公钥和私钥,公钥加密,私钥解密,解决密钥传输问题
(3)混合加密(重点)
HTTPS 实际采用混合加密
握手阶段使用非对称加密
数据传输阶段使用对称加密
- 身份认证
通过数字证书验证服务器身份
证书由 CA(证书颁发机构)签发
- 完整性校验
使用摘要算法(如 SHA)确保数据未被篡改
五、HTTPS 握手流程(重点)
-
客户端发起 HTTPS 请求
-
服务器返回数字证书(包含公钥)
-
客户端验证证书是否合法
-
客户端生成随机密钥
-
使用公钥加密该密钥并发送给服务器
-
服务器用私钥解密得到密钥
-
双方使用该密钥进行对称加密通信
一句话总结:先用非对称加密交换密钥,再用对称加密传输数据
六、HTTP 和 HTTPS 的区别
-
安全性
HTTP 不安全,HTTPS 安全
-
是否加密
HTTP 明文传输,HTTPS 加密传输
-
端口
HTTP 使用 80 端口,HTTPS 使用 443 端口
-
性能
HTTP 稍快,HTTPS 略慢(实际差异很小)
-
证书
HTTP 不需要证书,HTTPS 需要证书
-
SEO
HTTPS 更有利于搜索排名
七、HTTPS 的优缺点
- 优点
(1)数据加密,防止窃听
(2)验证服务器身份
(3)防止数据篡改
(4)提升网站可信度
- 缺点
(1)需要申请证书
(2)握手过程略有性能开销
(3)部署比 HTTP 更复杂
八、HTTP/2 与 HTTPS
- HTTP/2 特点
(1)多路复用
(2)头部压缩
(3)服务器推送
- 关系
主流浏览器中 HTTP/2 基本都运行在 HTTPS 上
九、常见安全问题
-
中间人攻击
攻击者拦截通信并伪造服务器
HTTPS 通过证书和加密进行防护
-
抓包攻击
HTTP 可以直接看到数据
HTTPS 数据是加密的
-
DNS 劫持
需要结合 HSTS 等机制防护
十、开发中的最佳实践
-
全站使用 HTTPS
-
配置 HSTS 强制使用 HTTPS
Strict-Transport-Security: max-age=31536000
-
禁用不安全协议
如 SSL 3.0
-
Cookie 设置安全属性
Secure 和 HttpOnly
-
配合认证机制
HTTPS 不能替代登录认证(如 Token、Session)
十一、面试高频问题
-
HTTP 和 HTTPS 的核心区别
是否加密,是否安全,是否需要证书
-
HTTPS 为什么安全
因为使用混合加密、数字证书和完整性校验
-
HTTPS 握手过程
重点记住七个步骤
-
为什么不用全程非对称加密
因为性能太低
-
HTTPS 一定安全吗
不一定,例如用户忽略证书警告或终端被攻击
十二、总结
-
HTTP 是明文传输协议,不安全
-
HTTPS 在 HTTP 基础上增加了加密和认证机制
-
HTTPS 通过混合加密解决了安全与性能问题
-
在现代开发中,应优先使用 HTTP。