HTTP演进 → HTTPS/TLS → 会话 → Web安全 追问链#
追问路径#
Q: HTTP/1.1、HTTP/2、HTTP/3有什么区别?
→ 1.1队头阻塞+文本;2.0二进制分帧+多路复用+头压缩(HPACK)+服务端推送;3.0基于QUIC(UDP)解决TCP层队头阻塞
Q: HTTP/2解决了队头阻塞,为什么还要HTTP/3?
→ HTTP/2只解决了应用层队头阻塞,TCP层一个包丢失仍阻塞所有流;QUIC在UDP上自己做流,丢包只影响单条流
Q: HTTPS是怎么保证安全的?
→ TLS握手:非对称加密(RSA/ECDHE)协商出对称密钥,之后用对称加密(AES)传数据;兼顾安全与性能
├─ Q: TLS握手具体流程?为什么用混合加密?
│ → ClientHello(随机数+密码套件)→ServerHello+证书→验证证书→交换密钥→生成会话密钥→Finished;非对称慢只用来安全传对称密钥
│ Q: 怎么防止中间人伪造证书?
│ → CA证书链信任:服务器证书由CA私钥签名,浏览器用内置CA公钥验签;证书含域名/有效期,对不上就告警
│ Q: ECDHE比RSA密钥交换好在哪?
│ → 前向安全(PFS):每次握手用临时密钥,即使长期私钥泄露也无法解密历史流量;RSA泄露私钥则历史可解
│ Q: HTTPS第一次握手慢,怎么优化?
│ → TLS1.3把握手从2-RTT降到1-RTT、支持0-RTT会话恢复;会话复用(Session ID/Ticket)、OCSP Stapling
└─ Q: HTTP是无状态的,登录态怎么维持?
→ Cookie存客户端、Session存服务端(SessionID放Cookie);分布式下Session要集中存(Redis)或用Token(JWT)
Q: JWT和Session怎么选?
→ Session有状态好失效但要共享存储;JWT无状态易扩展但难主动失效(只能短期+黑名单);移动端/多端常用JWT
Q: 常见Web攻击怎么防?
→ XSS(输出转义+CSP)、CSRF(Token+SameSite Cookie)、SQL注入(预编译)、越权(后端校验)
Q: SameSite和CSRF Token的关系?
→ SameSite=Lax/Strict让Cookie不随跨站请求发送,是第一道防线;关键操作再加CSRF Token双重校验plaintext涉及知识点#
- HTTP-1.1与HTTP-2对比 — 多路复用/头压缩/二进制分帧
- HTTPS与TLS握手 — 混合加密与握手流程
- HTTP状态码 — 2xx/3xx/4xx/5xx语义
- Cookie-Session-Token区别 — 三种会话维持机制
- JWT原理与实践 — 无状态Token的结构与失效难题
- 跨域与CORS — 同源策略与预检请求
- XSS与CSRF防御 — 注入与伪造请求防护
- 从URL输入到页面显示 — 全链路串联(DNS→TCP→TLS→HTTP→渲染)
- GET与POST区别 — 语义/幂等/缓存差异
- 长连接与短连接 — Keep-Alive与连接复用
- 分布式Session方案 — 集中式Session存储
核心串联逻辑#
- HTTP演进主线:1.1的队头阻塞→2.0多路复用解决应用层阻塞→3.0用QUIC(UDP)解决TCP层阻塞和握手延迟
- HTTPS=混合加密:非对称(慢、安全)只用来协商对称密钥,对称(快)加密实际数据;ECDHE提供前向安全
- 信任靠CA链:证书由CA私钥签名,客户端用内置CA公钥验签,杜绝中间人伪造
- 无状态到有状态:Cookie+Session维持登录态,分布式下要么集中存(Redis)要么改用无状态JWT
- 安全防御对应攻击:XSS转义、CSRF用Token+SameSite、注入用预编译、越权靠后端鉴权
- 代码示例:
http# 安全相关的关键响应头 Set-Cookie: SID=xxx; HttpOnly; Secure; SameSite=Lax # 防XSS窃取+防CSRF Content-Security-Policy: default-src 'self' # 防XSS脚本注入 Strict-Transport-Security: max-age=31536000 # 强制HTTPS(HSTS)
面试回答串联#
30秒速答#
“HTTP/1.1有队头阻塞,2.0用二进制分帧+多路复用解决应用层阻塞,3.0基于QUIC解决TCP层阻塞。HTTPS用混合加密——非对称协商对称密钥再用对称加密数据,靠CA证书链防中间人。HTTP无状态靠Cookie+Session维持登录,分布式下用Redis集中存或JWT。Web安全上XSS靠转义、CSRF靠Token加SameSite Cookie。“
2分钟展开答#
“HTTP/1.1的核心问题是队头阻塞和文本协议低效。HTTP/2改成二进制分帧,一个连接上多路复用多个流,加上HPACK头压缩和服务端推送。但HTTP/2只解决了应用层队头阻塞,底层TCP一旦丢包还是会阻塞所有流,所以HTTP/3干脆基于QUIC(跑在UDP上自己实现可靠传输和多流),丢包只影响单条流,还把TLS握手合进去减少RTT。HTTPS的安全靠混合加密:TLS握手阶段用非对称加密(现在主流ECDHE)安全地协商出一个对称会话密钥,因为非对称慢只用来交换密钥,之后用AES对称加密传数据兼顾性能。防中间人靠CA证书链——服务器证书由CA私钥签名,浏览器用内置CA公钥验签,域名对不上就告警。ECDHE相比RSA密钥交换的好处是前向安全,每次握手用临时密钥,长期私钥泄露也解不了历史流量。TLS1.3把握手压到1-RTT甚至0-RTT会话恢复。HTTP本身无状态,登录态靠Cookie存SessionID、Session存服务端,分布式下要么把Session集中存Redis、要么用无状态的JWT——JWT易扩展但难主动失效,所以一般配短过期时间加黑名单。Web安全方面:XSS靠输出转义加CSP头,CSRF靠SameSite Cookie作第一道防线再加CSRF Token,SQL注入用预编译,越权操作必须后端校验权限不能只靠前端隐藏。“
相关追问链#
- TCP握手-Socket-Netty追问链 — TLS建立在TCP之上、QUIC基于UDP
- Redis缓存问题-一致性-分布式锁追问链 — Session集中存储依赖Redis
- 微服务注册-熔断-限流-链路追问链 — 网关层统一鉴权与TraceId透传
- 项目经验-技术选型-问题排查追问链 — 接口安全是项目设计常见追问