邮件完整性检查HTTP标头,因为Content-MD5已弃用?

时间:2011-11-23 09:33:00

标签: rest http-headers md5 integrity

主要基于大文件上传/下载制作REST Web服务器,我希望能够检查文件的完整性。我认为正确的方法是使用内容-MD5 HTTP头[0],因为经验证明它很有用[1]。

然而,令我沮丧的是,我最近了解到它(被推荐?)已被弃用[2]。

弃用讨论没有给出任何解决方法提示,所以我问你:

我还应该决定使用Content-MD5 HTTP标头吗?

我应该使用具有相同含义的ETag(md5sum的base64编码)吗?

我应该使用?md5sum = XXX参数吗?

是否有更好的解决方案?

感谢您的见解。

最诚挚的问候, 乙

[0] https://webmasters.stackexchange.com/questions/2924/

[1] http://developer.amazonwebservices.com/connect/thread.jspa?threadID=22709

[2] http://trac.tools.ietf.org/wg/httpbis/trac/ticket/178

3 个答案:

答案 0 :(得分:1)

添加名为X-YourService-Integrity的自定义标头。这使得它明确表示它是一个特定于您的服务的系统,并允许您将来使用除MD5之外的完整性检查机制(例如,SHA1)。它还避免了你必须“重载”类似但不完全符合你想要的现有机制。

答案 1 :(得分:0)

https://www.ietf.org/rfc/rfc3230.txt

4.3.2摘要

摘要消息标题字段提供了以下内容的消息摘要: 消息中描述的实例。

  Digest = "Digest" ":" #(instance-digest)

消息描述的实例可能完全包含在 消息正文,部分包含在消息正文中,或者根本不包含 包含在消息正文中。该实例由 邮件中包含Request-URI和任何缓存验证器。

摘要头字段可以包含多个实例摘要值。 这对于预期驻留在缓存中的响应可能很有用 例如,由使用不同浏览器的用户共享。

收件人可以忽略摘要中的任何或所有实例摘要 标头字段。

发件人可以使用摘要算法发送实例摘要,而无需 知道接收者是否支持摘要算法,甚至 知道收件人会忽略它。

示例:

  Digest: md5=HUXZLQLMuI/KZ5KDcJPcOA==
  Digest: SHA=thvDyvhfIqlvFe+A9MYgxAfm1q5=,unixsum=30637

答案 2 :(得分:0)

请勿使用Content-MD5:已弃用它,因为它会导致不一致。

将摘要与sha-256或sha-512一起使用。我们正在将RFC3230更新为最新的HTTP规范(RFC7231),并添加了许多有用的示例https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-digest-headers-02

files

Want-Digest允许请求特定的Digest标头。

例如。客户端请求摘要,以支持sha-256和sha-512。服务器回复sha-256

请求

Digest: sha-256=4REjxQ4yrqUVicfSKYNO/cF9zNj5ANbzgDZt3/h3Qxo=

响应:

GET /items/123 HTTP/1.1
Want-Digest: sha-256, sha-512