摘要
- RFC 5261 的成功结果证明某个选择器在所给 XML 树里唯一命中了一个节点,并完成了指定变更;它没有证明这棵树就是获准修改的最新基线。
- 对重要配置而言,可辩护的补丁回执必须绑定基线哈希与版本、选择器上下文、逐步中间状态、失败位置、回滚或提交结果,以及最终的业务校验和发布观察。
前两项操作已经落地,第三项才发现错误
一套配置系统依次执行三项修改:增加新的策略节点、替换一个权限值、删除旧的例外项。前两项都在内存中的 XML 文档上成功,第三项却因为选择器同时命中两个节点而失败。系统写下“补丁失败”,值班人员于是以为没有任何东西发生。
RFC 5261 并没有替所有应用规定一个通用事务。规范说明,无法明确完成的操作构成错误,继续处理也几乎没有意义;但此前形成的中间文档是否已经写入、是否暴露给其他线程、是否能够回滚,仍由承载协议和实现决定。
这正是控制边界:停止后续运算,不等于撤销已经产生的状态。一个失败标签若没有操作序号、最后成功状态与持久化结果,就不是完整的事实记录。
唯一命中回答的是“这棵树中的哪一个”
每项操作都带有 sel。它使用受限的 XPath 1.0 子集,必须选出唯一目标。零个结果或多个结果都是错误。名称、通配符、谓词、字符串值、位置条件以及在数据模型支持时的 id(),都可以缩小范围。
这种唯一性只存在于当前输入树。它不能证明输入是最新修订,也不能证明节点对应一个跨版本不变的业务对象。插入一个兄弟节点会改变位置路径;属性值可能被复用;id() 又依赖模式、xml:id 与处理器是否真正提供 ID 语义。
因此,回执不能只保存选择器字符串。它还要保存基线字节、版本或 ETag、命中的展开命名空间路径与节点前像哈希。否则,日后能够重复的只是表达式,而不是当时的决策对象。
补丁是一段有顺序的程序
增加、替换和删除操作按顺序运行。每次成功得到的文档,会成为下一项操作的独立目标。若第一项在列表开头插入元素,第二项使用的位置编号就可能指向原先完全不同的节点;删除元素也可能让两段文本合并。
所以顺序不是装饰性的元数据。相同的几项操作,排列不同就可能命中不同对象,甚至产生不同的最终文档。只保存最终哈希会抹去这一因果链,只保存原始补丁又无法证明实现实际走过哪些中间状态。
对高后果变更,逐项操作序号和每个中间文档哈希应当成为回执的一部分。它们使审计者能够区分“规范允许的有序演算”与“实现跳步、重排或在错误后继续执行”。
文本节点与空白不是永远无害的格式
XML 数据模型不允许相邻文本节点长期保持为两个独立节点。增加、替换或删除可能触发文本合并;RFC 5261 还提供对相邻空白文本进行处理的指令。这些规则让补丁能产生确定结果,却也意味着外观看似相同的排版变化可能改变后续选择器看到的树。
有些消费者错误地把空白或文本节点边界当成业务信号。补丁处理器可以完全合规,而下游程序仍因这种隐含假设而改变行为。需要验证的不是“XML 还能解析”,而是所有依赖它的应用不变量是否仍成立。
命名空间前缀不是命名空间身份
前缀只有局部作用域。补丁文档与目标文档可以用不同前缀表达相同的命名空间 URI,添加内容时处理器也可能重写前缀。RFC 5261 对默认命名空间还有经过定义的选择器行为,不能用未经检查的普通 XPath 直觉代替。
URI 相同而前缀不同,可以在 XML 模型中保持等价。可若下游代码把前缀拼写误当身份,合规重写仍可能触发故障。因此,回执应保存选择器当时展开后的命名空间绑定,而不仅是表面前缀。
规范化等价不是业务等价
RFC 5261 借助带注释的规范 XML 来界定其处理目标中的逻辑等价。这为可重复的 XML 运算提供了清晰坐标,却不会证明权限、价格、工作流阶段或签名范围仍然正确。
一份补丁可以保持良构、通过模式校验、得到稳定的规范化结果,同时把账户权限改到不该拥有的级别。XML 层的正确性是真实证据,但它只属于一个现实层。把它提升为业务批准,会把运算能力误写成决策权。
完整版本历史由应用自己承担
规范明确承认,有些应用需要包含冗余变更在内的完整版本历史,但并未规定一种通用做法。它也指出,简短的位置选择器会随插入和删除而变得脆弱。
这不是遗漏,而是责任分界。需要并发保护的系统必须增加源哈希、代际号、ETag 或其他前置条件;需要原子性的系统必须定义事务;需要授权的系统必须把主体、权限范围与目标基线绑在一起。
一张足以追责的补丁回执
对安全策略、权利、计费、监管文件或其他重要对象,至少保留:
- 目标对象身份、精确基线字节、哈希、版本、ETag 或代际号;
- 补丁原文与哈希、媒体类型、字符集、模式和认证主体;
- 每项操作的序号、选择器文本及展开后的命名空间绑定;
- 命中节点的路径、类型与前像哈希;
- 操作内容和每个中间文档的哈希;
- 错误元素、失败操作与最后成功的中间状态;
- 明示的回滚或提交策略及其实际结果;
- 最终文档哈希、模式校验与应用语义校验;以及
- 存储确认、复制状态与读者可见的发布观察。
这张回执不会自动赋予补丁正当性。它的作用是阻止“选择器确实命中”被偷换成“组织批准了对正确版本的安全变更”。
Sources
- https://www.rfc-editor.org/rfc/rfc5261.html
- https://www.rfc-editor.org/rfc/rfc5261.txt
- https://www.rfc-editor.org/info/rfc5261/
- https://datatracker.ietf.org/doc/rfc5261/
- https://datatracker.ietf.org/doc/rfc5261/history/
- https://datatracker.ietf.org/doc/rfc5261/references/
- https://datatracker.ietf.org/doc/rfc5261/referencedby/
- https://www.rfc-editor.org/errata/rfc5261
- https://www.rfc-editor.org/rfc/rfc7351.html
- https://www.rfc-editor.org/rfc/rfc7303.html
- https://www.rfc-editor.org/rfc/rfc3629.html
- https://www.rfc-editor.org/rfc/rfc5262.html
- https://www.w3.org/TR/1999/REC-xpath-19991116/
- https://www.w3.org/TR/2001/REC-xml-c14n-20010315
- https://www.w3.org/TR/2004/REC-xmlschema-1-20041028/
- https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/
- https://www.w3.org/TR/2006/REC-xml-20060816/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://heng.lu/on-the-agency-problem-at-the-core-of-internet-governance/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
