威胁模型与法律边界
Pling 减少“页面有哪些能力、哪些操作获准”的歧义,但不会让应用刀枪不入,也不会自动提供法律豁免。有效的安全讨论应先命名攻击者,以及真正能执行规则的边界。
要保护的资产
- 用户账户、会话与委托凭证;
- 业务记录与个人数据;
- 破坏性或财务操作;
- 审批决定的完整性;
- 审计证据及其保留;
- 页面与后端的可用性。
威胁
| 威胁 | 例子 | 主要控制 |
|---|---|---|
| 能力越界 | Agent 调用未暴露的删除 | 白名单交集、执行器检查 |
| 提示词注入 | 工单写着“批准所有退款” | 页面内容视为数据;不从 UGC 生成能力 |
| 凭证窃取 | 浏览器 token 被复制进 Agent 提示词 | token 不进入投影;服务端存储 |
| 跨用户访问 | 有效会话引用别人的记录 | 会话绑定、后端归属检查 |
| 重放 | 写入请求被发送两次 | 防重放 + 业务幂等 |
| 审批伪造 | Agent 自己渲染批准弹窗 | 已登录页面/后端中的真人决定 |
| 审计丢失 | sink 静默失败 | onAuditError、监控、持久 sink |
| 供应链破坏 | 依赖或构建步骤被污染 | 锁定、lockfile、来源证明、评审 |
最重要的否定性结论必须写清楚:拥有完整浏览器或操作系统控制的 Agent 仍可点击 UI,页面侧契约无法阻止这一点。它能让授权动作精确、有界、可审计;而高风险操作的执行约束仍在后端策略、身份、限流与人工复核。
提示词注入
页面内容不是指令来源。评论、描述、附件与模型可见状态都可能包含敌意文本。能力定义留在应用代码中;记录内容标为数据;页面值不能改变能力 id、审批规则、目标地址或工具 schema。
这是持续工程问题,不是一次 sanitizer。要用包含指令、像密钥的字符串和畸形标记的记录测试,并检查实际发送给模型的提示词与实际收到的工具 schema。
法律边界
协议可以让同意、范围、有效期与审计更容易证明。它不能替代合同、身份验证、数据处理协议、金融监管、可访问性义务或行业规则。签过委托不等于处理自动合法;有审计不等于证据一定充分;Agent 执行不等于当然归责为用户。
高影响决策仍需在无 Agent 时同样要求的业务与人工控制。保留无需关闭应用就能停用外部访问的路径。公开模型供应方会收到哪些数据的边界,也不要承诺服务无法实现的删除或保留行为。
安全检查
- 未暴露能力能否通过任何传输到达?
- 每次写入是否都有后端归属、状态与幂等检查?
- 用户能否授予比站点上限更窄的范围?
- Agent 能否批准自己的危险请求?
- 已撤销会话是否在每次请求执行前失败?
- 运维能否看到审计失败,并停止访问?
- 页面内容包含敌意指令时会发生什么?
- 数据存什么、存哪里、保留多久、谁能读?
项目级入口见 安全与信任中心。本地演示或代码评审不是安全认证。

