smtp - 为什么雅虎!DKIM 签名中的重复标头?
问题描述
Yahoo! 的“h”字段 DKIM 签名:
h=From:Subject:Date:To:From:Subject;
在 DKIM 签名中重复标头有什么实际好处吗?
解决方案
简答
这是一种用于停止之后添加给定类型的其他标头的方法,否则这些标头可能会被注入并重复出现而不会破坏 DKIM。
更长的答案
消息签名者可以选择 DKIM 散列覆盖哪些标头(以及是否正文)。只有From标头是强制性的,其他是可选的,因此 DKIM 签名的“h”字段向接收服务器传达在针对哈希验证消息时应考虑哪些标头。
根据RFC6376:签名者选择对在消息中多次出现的现有头字段(例如Received头)进行签名,必须在头块中对该头字段的物理最后一个实例进行签名。希望签署此类头字段的多个实例的签名者必须在“h”字段中多次包含头字段名称。
签名者可以在“h”字段中包含比实际相应的头字段更多的头字段名称实例,以指示不应添加该名称的附加头字段。这是通过将缺少的标头值编码为null来实现的,如果随后进行了非法插入,这将与反向过程中的值不匹配。
在任何情况下,DKIM 都会针对重复项生成其哈希值,因此 DKIM 的测试需要做同样的事情来维护该顺序。
推荐阅读
- python - 是否可以通过 Id 循环并在内部执行操作?
- ssh - gcloud 计算——忽略了实例 ssh-key 元数据?
- java - 空对象的默认 hashCode
- c# - 如何从孩子更新 MDI 表单中的工具条进度条?
- python - 如何使用 BeautifulSoup 抓取非 HTML 标签
- rest - 如何使用 odoo 12 调用和读取 API REST(从我的应用程序到 odoo)
- javascript - 函数式编程:当输入需要改变时,如何将不纯函数转换为纯函数
- python - 使用 PyMC3 进行贝叶斯校准,Kennedy O'Hagan
- java - java中的Map.compute函数
- android - 自 Xamarin.Forms 中的按钮以来,我如何获取功能或创建调用主详细信息页面或菜单的按钮?