图解HTTP-7-8
Executive Summary
核心观点(金字塔原理)
结论先行: HTTPS通过SSL/TLS解决了HTTP的三大安全缺陷(窃听、伪装、篡改),配合多种认证机制确保Web通信的安全性。
支撑论点:
- HTTP存在明文传输、无身份验证、无完整性保护三大安全隐患
- HTTPS = HTTP + SSL/TLS,实现加密、认证、完整性保护三位一体
- 认证方式从BASIC到SSL客户端认证,安全级别逐步提升,表单+Session是主流方案
SWOT 分析
| 维度 | 分析 |
|---|---|
| S 优势 | HTTPS提供端到端加密;SSL证书验证服务器身份;Session机制弥补HTTP无状态缺陷 |
| W 劣势 | HTTPS增加服务器计算开销;BASIC认证仅Base64编码不够安全;客户端证书成本高 |
| O 机会 | 全站HTTPS已成行业标准;OAuth等现代认证协议可增强安全性 |
| T 威胁 | 证书私钥泄露风险;Session劫持攻击;中间人攻击(证书伪造) |
适用场景
- 电商、金融等需要高安全性的Web应用
- API接口的身份认证设计
- 单点登录(SSO)系统实现
7 确保Web安全的HTTPS
1-HTTP的缺点
通信使用明文可能会被窃听
- TCP/IP 是可能被窃听的网络
- 加密处理防止被窃听
- 内容加密
- 不验证通信方的身份就可能遭遇伪装
- 任何人都可以发起请求
- 查明对手的证书
- 无法证明报文完整性,可能已遭篡改
2-HTTP+加密+认证+完整性保护=HTTPS
SSL(Secure Socket Layer) TLS(Transport Layer Security)
HTTPS就是在HTTP协议的基础上加上SSL和TLS
8 确认访问用户身份的认证
认证方式
- 密码
- 动态令牌
- 数字证书
- 生物认证
- IC卡等
HTTP/1.1认证方式
- BASIC认证
- DIGEST认证
- SSL客户端认证
- FormBase认证
BASIC认证
C->>S:发送请求
S->>C:返回状态吗401告知C需要认证
C->>S:用户ID和PWD以Base64方式编码(并不是加密处理)后发送
S->>C:认证成功返回200,失败则401
DIGEST认证
C->>S: 发送请求
S->>C: 发送临时的质询码(随机数,nonce)以告知需要认证的状态吗401
C->>S: 发送摘要以及由质询码计算出的响应码
S->>C: 认证成功返回200失败401
SSL认证
客户端证书收费
C->>S:请求某一需要认证的资源,比如登陆
S->>C:发送Certificate Request报文,要求提供客户端证书
C-->S:将Certicicate信息以Client Certificate报文方式发送给S
S->>C:验证证书,通过后领取客户端的公开密钥进行HTTPS加密通信
基于表单认证
大多认证采用表单认证,涉及Session管理Cookie应用,即Cookie来管理Session,弥补HTTP协议为无状态的缺点。
C->>S:发送登陆信息ID,PWD
S->>C:返回包含Session ID的Cookie,以纪录认证状态
C->>S:发送包含Session ID的Cookie的请求
⚠️为减轻跨域站脚本攻击(XSS)造成的损失,建议事先在Cookie内加上httponly属性。