Skip to main content

8. Security Considerations (安全考虑事项)

本节旨在告知开发人员、信息提供者和用户有关 HTTP 条件请求的已知安全问题。

Disclosure of Entity Tags (实体标签的披露)

实体标签经常以"非标签"方式使用, 例如用于跨多个中介的缓存同步, 或作为识别内容存档快照的手段。了解如何为给定资源生成实体标签是特定于应用程序的, 并且通常是专有的。暴露披露有关应用程序逻辑或中介缓存行为信息的实体标签可能会泄露有关如何规避该应用程序的访问控制或操纵中介缓存的信息。

源服务器应该考虑某些实体标签在某些情况下可能会披露可能被认为是敏感的信息。示例包括:

  • 版本控制信息 (例如, 修订号、分支名称)
  • 从具有访问限制的内容派生的哈希或签名
  • 揭示内部实现细节的模式

Denial of Service Using Conditional Requests (使用条件请求的拒绝服务)

尽管条件请求可以通过允许重用缓存表示来减少网络带宽和处理开销, 但它们并不足以防止拒绝服务攻击。恶意客户端仍然可以对不同资源或同一资源使用无效或不断变化的条件头字段发出许多条件请求, 从而超出服务器的响应能力。

服务器应该监控条件请求的使用, 并在检测到异常模式时考虑速率限制或其他防御措施。

Protocol Element Length (协议元素长度)

服务器应该对条件头字段值的大小和数量设置合理的限制, 特别是 If-MatchIf-None-Match 头字段中的实体标签, 因为实体标签值没有标准长度约束。极长的实体标签或单个头字段中过多的实体标签可能被用来耗尽服务器资源。