报告邮箱是输入边界,而不是可信数据源。附件可能格式错误、尺寸过大或故意造成处理成本过高。构建摄取路径,以便传输接受并不自动意味着解析器接受,并且解析器接受并不自动意味着报告的声明是值得信赖的。
RFC 9990 描述聚合 XML 交付并警告资源耗尽和虚假信息。下面的管道是实施建议,而不是声称特定产品已经提供了这些控件。
将摄入量与分析分开
参考: RFC 9990 §8.1, RFC 9990 §8.2.
分配到达标识符并保留对原始附件的有界、访问控制的引用。记录其大小、指纹、到达时间和传输元数据。应用队列和每源资源控制,以便一个流不能垄断工作人员。将发件人地址或熟悉的文件名视为不足以证明其真实性。
保持工作人员的最低特权,并与用于发布最终指标的数据库凭据分开。防止附件内容确定可执行命令或目标路径。失败的输入属于受控诊断路径,而不是公共错误页面或不受限制的日志。
运行时绑定解压
参考: RFC 9990 §3.5.2, RFC 9990 §8.1.
RFC 9990指定了 XML 并推荐 GZIP 压缩。根据记录的兼容性策略检测支持的格式并拒绝不支持的容器。如果有意支持较旧的存档格式,请检查其额外的提取和路径风险,而不是将它们视为等同于单个 XML 流。
设置压缩字节、扩展字节、处理时间、内存、记录计数和并发的限制。在读取时强制执行扩展大小限制,而不是在分配整个输出之后。容器内的尺寸声明不能替代测量实际输出。当达到配置的限制时停止处理。
解析没有不必要的功能
参考: RFC 9990 §3.1.1, RFC 9990 §8.1.
使用经过维护的解析器并检查其实际运行时配置。禁用不需要的文档类型、外部实体解析、XInclude 和外部资源检索。将不受支持的强化设置视为配置失败,而不是要忽略的警告。在需要验证的地方使用受信任的本地架构,而不是遵循附件提供的架构位置。对嵌套和文本大小以及总字节应用限制。
验证预期的报告结构和字段语义与 XML 格式良好性分开。文档可能格式良好但无法用作 DMARC 报告。保留拒绝的原因,而不将解析器失败转换为邮件身份验证判决。
使用小型有界夹具
说明性分段配置:允许为特意小型测试工作人员提供 64 KiB 压缩输入和 256 KiB 扩展输出。无害的 GZIP 固定装置可扩展至 300 KiB 的重复测试文本。预期结果是在完全实现之前进行扩展大小停止、未提交任何报告行以及包含限制和输入引用的诊断。
这些数字是示范限制,而不是生产规模建议。之后立即测试有效的小报告,以验证工作人员是否仍然可用。在声称控制有效之前记录实际测量结果。本文描述所需的暂存行为,而不是执行的租户测试。该评论包还记录了一个新的有界 Python GZIP 演示:它最多用一个额外的检测字节来检测超出 256 KiB 上限的扩展,然后成功处理一个微小的有效 XML 文本流。这仅演示了本地解压防护,而不演示了解析器强化、内存隔离或数据库行为。
仅提交经过验证的数据
参考: RFC 9990 §3.5.4, RFC 9990 §9.2.
暂存规范化记录并在验证和重复处理后自动完成导入。中断的文件不应在生产分析中留下部分计数。使重放幂等并保留将重复到达与计数报告联系起来的决策。
监视拒绝的字节、处理时间、队列寿命和恢复结果。合法报告可能会超出当地限制,因此请提供受控的审查路径,而不是自动提高每个限制。与指定所有者完成操作设计,以进行接收、解析器维护、存储保留和事件响应。