A2UI 生产安全清单
A2UI 降低了执行 Agent 生成代码的风险,但不会把模型输出自动变成可信数据。远端消息、属性、URL、Action 和 Data Model Update 都应视为不可信输入。
渲染前
- 协商协议版本,拒绝不支持的 Envelope。
- 使用准确的版本化 Schema 校验消息。
- 只允许已注册的 Catalog 与组件。
- 限制消息大小、组件数、树深度、列表长度和更新频率。
- 拒绝重复 ID、悬空 Child、非法路径和未知属性。
- 阻止
__proto__、constructor、prototype等原型路径片段。
组件策略
- 所有链接通过白名单 URL Handler,限定 Scheme 并优先 HTTPS。
- 把 iframe、WebView、原始 Markdown/HTML、媒体、下载、剪贴板、导航和支付组件视为高权限能力。
- 净化 Markdown,默认禁止原始 HTML。
- Secret、Access Token、Session ID 和私有 Prompt 不能进入组件属性或 Data Model。
- 标识外部内容,让用户能区分远端 UI 与宿主可信 UI。
Action 与高影响决策
- 服务端必须重新鉴权;禁用按钮不是访问控制边界。
- Action 绑定稳定 ID,并用当前服务端状态校验 Context。
- 删除、发布、账户修改、购买、支付和敏感信息披露必须二次确认。
- 高影响操作的重试必须幂等。
- 审计 Agent、Catalog、Surface、Action、用户、决策和结果,但不能记录 Secret。
隐私与 YMYL
- 最小化发送给模型和 Renderer 的个人数据。
- 健康、法律、金融和安全内容应标明仅供信息参考,高后果决策交由合格人员复核。
- 未获得权威确认时,生成 UI 不能暗示诊断、保证收益、法律结论或交易已经完成。
- 在适用场景提供查看、纠正、导出和删除用户数据的路径。
无障碍与韧性
- 保留语义 Role、Accessible Name、焦点顺序、键盘操作和 Live Region 通知。
- 状态和校验不能只靠颜色表达。
- 尊重 Reduced Motion 与对比度偏好。
- 未知组件或 Renderer 故障时提供文本降级。
- 测试慢流、残缺负载、重连、重复投递、过期 Action 和 Agent 超时。
安全证据
官方 Web Core 已经修复 URL 打开过程中的 XSS/反向标签劫持和 DataModel 原型污染。这说明声明式 UI 仍需要实施加固和保持依赖更新。
本清单是工程指导,不能替代正式安全评估或法律审查。