摘要
- RFC 9553 先按 RFC 5646 语言标签选择 PatchObject,再复制基础 Card、去掉
localizations,把全部补丁施加到副本,并将其作为本地化变体使用。 - 整体拒绝规则能防止半套补丁落地,却不能证明译文官方、别名获批、作者有权修改,或联系方式仍属当前事实。
- 可问责的本地化记录必须绑定基础版本、选中标签、补丁哈希、授权范围、输出哈希和后续用途,而不是把每种语言当作独立事实源。
完整页面制造了独立来源的错觉
读者不会看到“基础对象加若干路径替换”。他看到的是一张完整联系人卡片。姓名、头衔、电话、地址同时出现,界面自然让人以为这一语言版本有自己的一套来源和审核。
RFC 9553 对 localizations 的定义更严格。它是从语言标签到 PatchObject 的映射。生成变体时,应用先确定语言标签;若存在对应条目,就复制 Card,但不复制 localizations;随后把全部补丁应用到副本,可选择更新副本的 language,再使用这个结果。
副本没有因此获得新的 uid,标准也没有赋予它单独的修订历史、事实负责人或身份验证结果。它继承基础 Card 未被修改的字段,并依赖选中的那一组补丁。
如果系统只保存最终页面,就失去了两项关键输入。以后出现差异时,无法判断错误来自基础数据、补丁文字、语言选择还是缓存的旧版本。本来可重放的投影,会退化成一份来历不明的复制品。
原子性只回答结构问题
PatchObject 的键使用带隐含前导斜杠的 JSON Pointer 子集。最后一个路径段之前的对象必须已经存在;可以替换数组中的现有成员,却不能用 插入或删除;同一补丁集中不能有一条路径是另一条的前缀;新值必须符合目标属性的类型和限制,null 只能删除可选属性。
任何一项无效,整个 PatchObject 都必须被拒绝,不能留下已经成功的一部分。这个规则很重要:系统不能只替换姓名,却悄悄忽略失败的地址修改,然后向读者展示混合状态。
但“整体有效”只说明这组转换能对给定基础对象按模型执行。它不说明译文自然,不说明新职务仍然真实,也不说明提交者有权换掉电话或电子邮箱。
生产系统至少应区分:JSON 可解析、模型有效、补丁可应用、来源已认证、字段修改已授权、身份名称已批准、事实仍有效、实际联络已成功。把它们合并为一个“已本地化”状态,是把解析器没有做过的判断强加给解析器。
路径与基础版本不可分离
RFC 9553 给出两种很不一样的示例。一种用另一种文字完整替换顶层 name;另一种只修改 titles/t1/name,保留 t1 的其他成员。后者精确而高效,但它假定 titles 仍存在、t1 仍指向同一职务、name 仍允许这个值。
标准要求同一 JSContact 对象多个版本之间保留 Id 映射键,这正是为了稳定引用和补丁。不过这些键只是局部坐标。标准明确指出,相同 Id 出现在不同映射或不同 Card 中,并不自动表示语义关联。
所以,为基础哈希 A 审核过的补丁,不能在没有记录的情况下直接套到 B。若 t1 的业务含义已经改变,路径仍可能有效,输出却已经过时;若键被移除,补丁应当失败;若基础只改了不相关字段,补丁可能继续适用,但这需要明确的复核规则。
updated 无法还原这段历史。它只表示 Card 数据最近被修改的时间,不告诉系统改了哪个字段、谁改的、依据是什么、旧值是什么,也不证明所有本地化都重新审核。prodId 是产品标识,不是签名。version 是 JSContact 模型版本,不是这张卡片的业务修订号。
语言标签不是官方名称证明
RFC 5646 标签可以表达语言,也可带文字或地区信息。RFC 9553 的流程第一步是“确定语言标签”,却没有替所有产品规定完整的协商政策。是否从 zh-Hant-HK 回退到 zh-Hant,如何处理读者偏好,何时使用主语言,仍是应用决策。
格式正确的标签也不会认证标签背后的字符串。机构的另一语言名称可能是官方名称、惯用译名、音译、编辑便利说法,或者彻底杜撰。个人姓名换一种文字,可能保留了本人认可的原名,也可能创造一个从未使用过的名字。
PatchObject 可以携带这个替代值,但没有权力把它升级成官方别名。涉及个人和机构身份时,系统应保存官方多语来源、本人确认的别名,或经过审查的转写规则。没有这些证据,最多只能说“系统能够展示这一语言变体”。
这条边界也适用于地址和职务。地址本地化可能只是调整顺序,也可能把地区翻错;职务翻译可能准确,也可能无意中提高或降低级别。语法合格无法替代语义审核。
攻击者同样会写流利的本地化内容
RFC 9553 的安全章节把联系人数据称为高度敏感信息,因为它可能暴露身份、位置、凭据、就业、兴趣和社交关系。文档列出窃听、重放、插入、删除、修改和路径中攻击。
更直接的例子是冒充:攻击者使用他人的姓名,却填入自己的联系方式。自然的本地化甚至会让欺骗更可信。读者看到熟悉的文字、得体的称谓和本地格式,可能更少检查电话或邮箱究竟由谁控制。
RFC 要求会产生现实后果的系统认证收到的数据,并确保修改来自获授权实体。随后它又划清自身范围:本文只定义数据格式;API、存储和传输方式必须承担外围安全责任。
因此,认证传输只能说明哪个服务送来了 Card,不一定说明该服务能修改所有字段。数字签名可以证明谁签了补丁,不一定证明姓名主体批准了别名。模式校验能识别非法路径,却识别不了类型完全正确的谎言。
注册表协调词汇,不裁定事实
RFC 9553 注册 JSContact 1.0,并建立版本、属性、类型和枚举值注册表。条目可标记 Since Version 和 Until Version,帮助实现判断某个属性在何种模型中有效。
这是互操作权威,不是实例事实权威。注册表能回答“这个属性是否定义”,不能回答“首席科学家是否仍是此人的职务”“这个地址是否可公开”“这个号码是否属于姓名所指的人”。
“有效 JSContact”应当保留这种精确含义:它针对指定模型和注册表快照有效。若界面把它翻译成“联系人已验证”,就把格式治理错误提升成身份认证。
轻量谱系比九份独立副本更可靠
可重放记录并不复杂。它包含基础 Card 的 uid、模型版本、内容哈希和业务修订;语言选择请求或政策;PatchObject 原文、哈希、来源和授权范围;整体校验结果;输出哈希、时间和下游消费者。
若补丁改变受保护的个人或机构名称,再附上别名批准依据。若本地化邮箱、电话或地址触发自动化,再记录动作与结果。页面成功显示不能代替邮件送达、电话接通或权限正确授予。
基础更新到来时,这条谱系能支持三种不同结论:补丁不受影响、补丁需要复核、补丁已失效。系统不必靠复制九张卡片并期待它们偶然保持一致。
本地化的价值在于让同一份资料更容易理解。只有当继承事实、替代字符串、批准者和实际效果都能被解释时,这种便利才不会变成无声的权力扩张。
来源
- RFC 9553 信息页
- RFC 9553 HTML
- RFC 9553 文本
- RFC 9553 XML
- RFC 9553 Datatracker
- RFC 9553 Datatracker API
- RFC 9553 勘误
- IANA JSContact 注册表
- RFC 5646:语言标签
- RFC 6901:JSON Pointer
- RFC 8259:JSON
- RFC 8126:IANA 注册表政策
- RFC 9554:面向 JSContact 的 vCard 扩展
- RFC 9555:JSContact 与 vCard 转换
- RFC 6350:vCard
- On Reality Layers, Symbolic Power, and Why Clarity Feels So Hostile
- Running Code Primary
- Minimum Initial Specification, Localized Future Decision
会员简报
更深入的趋势背景
使用相应会员等级登录,即可解锁完整简报与来源注释。
战略圈层
每天用你选择的语言,送上一份基于我们已核实变化的简报。
以 USD 20/月加入可随时取消。
公开报道保持免费。会员研究、每日简报和论坛需要会员资格。






