Skip to content

安全与隐私 ​

Surface 扩大的是页面业务能力的可达范围,因此安全边界不能只放在提示词或客户端。实现应假定调用方可能恶意、模型可能被注入、凭证可能泄露,并让每个失败路径默认关闭。

威胁 ​

威胁典型情形主要控制
混淆代理Agent 借用户会话执行用户未同意的操作明确委托、作用域交集、后端授权
权限提升能力清单隐藏,但调用相似 id 仍可执行同一交集校验、默认拒绝
重放同一请求被重复提交,产生二次写入request id、防重放窗口、幂等业务
提示注入工单正文诱导 Agent 忽略规则数据/指令分离、固定能力说明
凭证泄露token 进入模型上下文、日志或 URL凭证只留在宿主、出站脱敏
会话劫持跨站请求或盗用 Cookie 调用桥SameSite、CSRF、origin 校验、短期委托
恶意 Agent批量调用、探测隐藏能力、诱导批准限流、审计、审批隔离、撤销
UI 欺骗审批界面显示与真实参数不一致绑定规范化参数、真人可见摘要
供应链恶意 SDK 或依赖读取页面数据锁定依赖、构建审计、最小权限

认证与授权 ​

认证、业务授权与协议校验是三层独立控制:

  • 认证确认“谁在调用”;
  • 业务授权确认“这个用户能否做这件事”;
  • 协议校验确认“这个能力是否属于本次暴露范围”。

任何一层成功都不能替代其他层。后端必须在写入前重新检查权限、租户、对象归属、金额与业务约束。页面能力描述只是提示和边界,不是数据库授权。

最小暴露 ​

应用应逐项决定外部 Agent 是否需要某字段、某项能力或某个页面。默认不应把整个 store、整个 DOM 或所有内部 API 投影出去。

敏感值可以采用:

  • 完全不投影;
  • 返回稳定代号,执行时由页面解析;
  • 返回掩码供人识别;
  • 仅在用户确认界面显示原文。

代号必须绑定记录与字段,不能在另一条记录上复用。响应、after、错误消息、调试面板和审计日志都必须遵守同一暴露规则。

提示注入与数据边界 ​

用户评论、文件名、工单正文、网页内容和工具返回值都是不可信数据。它们不得改变能力说明、审批要求或系统规则。客户端应把页面内容放在明确的数据区,并避免把“请忽略之前指令”等文本提升为工具指令。

模型生成的参数在进入执行器前必须再次校验 schema 与记录归属。模型无权决定 userId、agentId、sessionId 或审批结果。

审批与撤销 ​

高风险操作必须由真实用户确认。审批挑战应绑定:

  • request id;
  • 能力 id;
  • 目标记录;
  • 规范化输入摘要;
  • 用户、Agent 与会话;
  • 有效期。

Agent 只能看到等待状态与最终结果,不得看到批准 token。撤销后,后续调用必须立即失败;浏览器事件只是加速提示,不能替代每次调用的验证。

审计与隐私 ​

审计需要足够回答“谁在何时对哪条记录做了什么”,但不需要保存原始提示词或完整业务正文。默认记录元数据与稳定错误码,敏感字段使用受控标识。日志保留期限、访问权限和数据主体请求应由部署方定义。

部署控制 ​

  • 只通过 HTTPS 暴露远程传输;
  • 不把凭证放入 URL 或前端构建变量;
  • 对 postMessage 校验 origin 与 source;
  • 对 HTTP 接口实施 CSRF 防护与同源策略;
  • 为限流、防重放、审计配置持久化与告警;
  • 对第三方依赖做版本锁定和漏洞扫描;
  • 准备全局暂停、撤销单个 Agent、收窄作用域与回滚版本的操作路径。

法律边界 ​

协议不会自动产生合规资格或责任豁免。它让授权范围、用户同意、最小权限与审计链更清楚,但高风险业务仍需要合同、身份核验、人工复核和适用法律要求的控制。当前版本没有独立安全审计,也没有认证第三方实现;不要把“协议支持”说成“已经安全认证”。