9. Security Considerations (安全考虑事项)
9.1. Establishing Authority (建立权威)
HTTP 依赖 URI 权限组件的概念来确定是否有权发出或响应请求。
9.2. Risks of Intermediaries (中间方的风险)
通过代理、网关或隧道等中间方路由 HTTP 请求和响应会引入多种安全问题:
- 中间方可能被攻破
- 中间方可能错误地转换消息
- 隐私泄露
9.3. Attacks Based on File and Path Names (基于文件和路径名的攻击)
源服务器应谨慎处理包含"."、".."或特殊字符的请求路径,防止目录遍历攻击。
9.4. Attacks Based on Command, Code, or Query Injection (基于命令、代码或查询注入的攻击)
源服务器在将 HTTP 请求内容用于:
- 构造 SQL 查询
- 执行系统命令
- 生成动态代码
时,必须进行适当的输入验证和清理。
9.5. Attacks via Protocol Element Length (通过协议元素长度的攻击)
过长的协议元素可能导致:
- 缓冲区溢出
- 拒绝服务 (DoS)
- 资源耗尽
防护措施:
- 设置请求行长度限制
- 设置头部字段大小限制
- 实施超时机制
9.6. Response Splitting (响应分割)
如果攻击者可以在响应头部字段中注入 CRLF 序列,可能导致响应分割攻击。
防护: 服务器必须验证和清理所有头部字段值。
9.7. Request Smuggling (请求走私)
当不同的服务器或代理对消息边界的理解不一致时,可能发生请求走私攻击。
关键防护:
- 如果同时收到
Transfer-Encoding和Content-Length,必须拒绝或忽略Content-Length - 严格遵守消息解析规则
9.8. Message Integrity (消息完整性)
HTTP 本身不提供消息完整性保护。使用 HTTPS (HTTP over TLS) 可以提供:
- 加密
- 身份验证
- 完整性保护
9.9. Privacy of Server Log Information (服务器日志信息的隐私)
服务器日志通常包含敏感的个人信息,应该受到适当保护。
✅ Section 9 完成
关键安全要点总结:
- ✅ 始终验证和清理用户输入
- ✅ 实施长度和超时限制
- ✅ 严格遵守消息解析规则以防止走私攻击
- ✅ 使用 HTTPS 保护敏感通信
- ✅ 谨慎处理中间方
- ✅ 保护服务器日志中的隐私信息