HTTP Content-MD5标头的注意事项


12

我们正在讨论是否使用Content-MD5标头。

优点:

  • CMS使我们能够以最少的开销轻松地将其包括在内(在80%以上的案例中缓存了响应)。
  • 它将增加另一层防止问题的保护。

缺点:

  • Content-Length标头始终存在(即使在动态创建的页面上也是如此),因此客户端不需要其他形式的验证。
  • 到目前为止,我们尚未意识到由腐败引起的任何问题。
  • MD5检查会增加网页加载时间的延迟。

要点:

  • 某些媒体类型是否包含自己的摘要形式,从而使此操作不必要?
  • 如果TCP已经提供了此功能,为什么将其包含在HTTP标准中?
  • 现有的现实生活用途是什么?
  • MD5检查是否可以忽略不计?

将其添加到单元测试并实施约一个小时的工作并不是真正的问题。但是,如果有害,那么我们希望将其添加到网站“健康检查”中使用的更高级别的嗅探测试中。

Answers:


10

TCP已经具有错误纠正功能,但这只能在TCP层上为您提供帮助。中介HTTP代理或负载平衡器可能会破坏HTTP层上的数据,然后重新传输。HTTP MD5使得可以检测到此损坏。没人真正谈论这种需求的原因是,这个问题确实非常罕见。大多数HTTP代理等“正常工作”。

RFC暗示了安全性。恕我直言,这是如此微弱,应该忽略-如果您需要任何形式的真实安全性和机密性,则需要HTTPS。

某些媒体类型是否包含自己的摘要形式,从而使此操作不必要?

没有什么真正的好。但是照片,流媒体视频等中的一些错误通常是人类无法察觉的。

我会说这取决于用例:

  • 对于基于REST的Web服务,摘要添加了有用的附加错误纠正层。请参阅此AWS故障作为示例
  • 对于通过纯HTTP处理关键任务数据的应用程序,值得实施。Content-MD5为客户端提供了验证端到端传输完整性的选项。
  • 对于提供正常值文本和媒体的“正常”网站,Content-MD5标头没有任何作用。老实说,我什至不知道实际上有多少主流浏览器(PC,尤其是移动浏览器)支持它。

1
该AWS故障案例确实是阴险的。它已经使用了几年,但确实是我从未想过的故障模式的一个迷人示例。在远程使用数据存储时要注意的一个非常有趣的东西。我想知道一些NoSQL解决方案以及它们如何处理此类问题。
artlung

这使得将决策传递给客户非常容易。这样的选项现在可以作为“具有条件”提供,但不是必要条件。如果亚马逊能够部署负载平衡器并导致这些错误,那么它最终可能会出现在某个地方,并且看上去没有比这麻烦的网站更糟糕的了。
Metalshark

这实际上取决于翻转位在哪里。如果它是最低有效位,那么它将是不可察觉的。但是,rgb(255, 0, 0)和的颜色之间存在巨大差异rgb(127, 0, 0)。对于原始视频,单个像素的损坏将不会那么明显,因为它在屏幕上停留了很短的时间,但是由于大多数在线视频都使用高效的压缩算法,因此翻转单个位会导致一半的图片在整个屏幕上损坏或移动。屏幕。
冒犯君主

另外,就像您说的那样,银行应该只使用HTTPS,难道它们都没有用处Content-MD5,因为SSL / TLS已经在应用程序层提供了消息摘要?
冒犯君主

1
@Lèsemajesté:关于位错误,我同意抽象的说法。但是请记住,大多数流视频FX使用UDP或TCP上的特定于应用程序的传输来在纠错和速度之间进行“正确”的权衡-因此,流视频并不是Content-MD5的用例。关于银行应使用HTTPS,我同意,并且我想更清楚地说明一下。
Jesper M 2010年

1

MD5检查会增加网页加载时间的延迟。

如果为真(并且延迟不完全是微不足道的),那么我说这是不值得的。

通常,我相信最后修改的标头最常用于确定页面是否已更改。假设你提供有意义的价值在那里,我认为没有必要为内容-MD5标头。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.