Https 在实际下载之前,如何可靠地获取通过http下载的文件的摘要/哈希/指纹?

Https 在实际下载之前,如何可靠地获取通过http下载的文件的摘要/哈希/指纹?,https,hash,http-headers,md5,Https,Hash,Http Headers,Md5,请使用以下url: https://i.imgur.com/oEdf6Rl.png 当我请求时: Connection keep-alive Content-Length 44374 Last-Modified Sun, 21 Feb 2021 15:14:36 GMT ETag "83c16cca4ee371145485130383104315" Content-Type image/png cache-control public, max-age=315360

请使用以下url:

https://i.imgur.com/oEdf6Rl.png

当我请求时:

Connection
keep-alive

Content-Length
44374

Last-Modified
Sun, 21 Feb 2021 15:14:36 GMT

ETag
"83c16cca4ee371145485130383104315"

Content-Type
image/png

cache-control
public, max-age=31536000

Accept-Ranges
bytes

Date
Thu, 25 Feb 2021 18:33:52 GMT

Age
357546

X-Served-By
cache-bwi5147-BWI, cache-sea4455-SEA

X-Cache
HIT, HIT

X-Cache-Hits
1, 1

X-Timer
S1614278033.761056,VS0,VE1

Strict-Transport-Security
max-age=300

Access-Control-Allow-Methods
GET, OPTIONS

Access-Control-Allow-Origin
*

Server
cat factory 1.0

X-Content-Type-Options
nosniff

NoError
Unknown error
我没有看到任何杂烩。我已经读到,您可以请求带有标题的可选哈希值,例如
Content-MD5
()和
Want-Digest
() •对我来说没有意义的是,当您下载该图像时,它没有提供类似md5的散列,如何验证我收到的实际上是发送的

事实并非如此。尽管它是通过HTTPS传输的,这也保证了消息不会被更改

•如果使用散列进行验证,为什么会有所有这些随机可选的头,您可以在其中请求散列

这些都是附加的。但应该注意的是,RFC 1884用于MIME消息(即电子邮件附件),而不是HTTP请求。对于Content-MD5 for HTTP,这一功能已被淘汰,现在可以使用
Want Digest
/
Digest
方法

但是,如果HTTPS保证消息未被篡改,为什么您需要它呢

“然而,在某些情况下,仅依靠这一点是不够的。独立于传输运行的HTTP级完整性机制可用于检测编程错误和/或静态数据损坏,可跨多个跃点使用,以提供端到端完整性保证,帮助跨跃点和系统bou进行故障诊断NDARES,并可用于在重建使用不同HTTP连接获取的资源时验证完整性。”

•我需要知道在实际下载之前是否有可靠的方法获取文件的指纹/哈希/摘要。如果没有,是否有“最”可靠的方法

IMHO很少支持摘要头,因此最可靠的方法是单独下载哈希。许多软件下载页()将这些作为单独的二进制文件下载链接提供。尽管这些是为了确保最终下载完整性,而不是HTTP部分

老实说,HTTPS解决了传输层安全中对摘要的大部分需求,这就是为什么您看到摘要被大量使用的原因,除非构建一个想要单独发送此摘要的专门应用程序

对我来说没有意义的是,当你下载那个图像时,它并没有像md5那样提供散列,它如何验证我收到的实际上是发送的

大多数HTTP服务器不支持提供摘要。虽然有些服务器支持,但这是非常罕见的。如果您使用HTTPS,那么TLS提供完整性保证,即数据是完整的,并且没有由于HMAC值(密钥哈希)或AEAD加密算法(本质上是加密和密钥哈希合一)而被篡改。假设连接已正确终止,并且双方都正确使用协议,并正确验证完整性,则可以确保连接另一端发送的数据完好无损

如果它使用散列进行验证,为什么会有所有这些随机可选的头,您可以在其中请求散列

当摘要是预计算和修复的,并且摘要用于检测创建它的系统和服务它的服务器之间的意外问题时,这些头值最有用。例如,它可以用于检测CDN是否存在导致它意外截断数据的编程错误

它们也可以在HEAD请求中使用,以查找对象的摘要,而不发送整个对象。例如,如果您使用HTTPS并希望收集摘要供将来使用,而不下载数据,则这些标头可能会很有用。请注意,由于MD5完全不安全,且责任方不使用,因此e
Content-MD5
头是完全无用的,不会提供任何有用的信息,尽管带有SHA-256或SHA-512值之一的
Digest
头肯定可以

我需要知道在实际下载之前是否有可靠的方法获取文件的指纹/哈希/摘要。如果没有,是否有“最”可靠的方法

由于大多数网站不提供
摘要
标题,您无法在大多数地方使用它。如果您的目标是验证软件的完整性,则不同的分发者会提供哈希、签名或两者,尽管这取决于项目。如果您只想确保收到的数据未被篡改,请使用HTTPS。如果您只想知道位于任意URL的内容的散列,那么除非服务器支持
摘要
标题,否则您只需下载它即可找到答案