为什么雅虎!在 DKIM 签名中重复 headers?

Why does Yahoo! repeat headers in DKIM signatures?

"h" Yahoo! 字段DKIM 签名:

h=From:Subject:Date:To:From:Subject;

在 DKIM 签名中重复 headers 是否有任何实际好处?

简答

这是一种用于阻止以后添加给定类型的额外 header 的方法,否则这些 header 可能会被注入并重复出现而不会破坏 DKIM。

更长的答案

消息签名者可以选择 DKIM 哈希覆盖哪些 header(以及 body)。只有 From header 是强制性的,其他都是可选的,所以 DKIM 签名的 "h" 字段传达给接收服务器 headers 应该在根据哈希验证消息时被考虑。

根据 RFC6376 :选择签署现有 header 字段的签名者在消息中多次出现,例如 Received headers,必须在 header 块中签署 header 字段的物理最后一个实例。希望签署此类 header 字段的多个实例的签名者必须在 "h" 字段中多次包含 header 字段名称。

签名者可以在 "h" 字段中包含比实际对应的 header 字段更多的 header 字段名称实例,以指示该名称的其他 header 字段不应该添加。这是通过将缺失的 header 值编码为 null 来实现的,如果随后进行了非法插入,这将与反向过程中的值不匹配。

在任何情况下,DKIM 都会根据重复的术语生成其哈希值,因此 DKIM 的测试需要做同样的事情来维护该顺序。