AI应用工程 · KNOWLEDGE CHAPTER
K33

安全、权限与可信输出

模型负责提出内容和操作候选,应用负责证明“谁有权对什么做什么”。可信性沿着身份、来源、批准记录和真实回执建立,不能由模型一句“已经完成”赋予。前端既是用户审阅界面,也是输出进入浏览器和外部网络前的重要边界。

AI应用工程2 道章节练习7 道主练关联

核心模型

模型负责提出内容和操作候选,应用负责证明“谁有权对什么做什么”。可信性沿着身份、来源、批准记录和真实回执建立,不能由模型一句“已经完成”赋予。前端既是用户审阅界面,也是输出进入浏览器和外部网络前的重要边界。

原理与机制

从密钥保护走向受控业务入口

长期模型密钥放在服务端,浏览器仅携带应用身份调用 BFF。BFF 要重新鉴权和隔离租户,限制模型、工具、输入规模、并发和费用,不能做接受任意上游地址的透明代理;同时正确转发流、取消与超时,防止缓冲破坏体验或错误日志泄密。若产品确需浏览器直连,应由已鉴权后端提供服务商支持的短期会话凭据,并核实到期与能力限制;短期凭据并不天然单次有效,也不自动封顶费用。

让确认约束实际执行参数

工具名和 JSON 参数只是候选。服务端先检查白名单、schema、对象归属、字段权限和当前业务状态,再生成不可变待执行记录。确认页从同一记录展示目标、重要参数、附件等;批准绑定记录版本或规范化摘要,执行前再次验证权限、有效期和参数一致性。改收件人或扩大对象范围必须重新确认。结果按 callId 关联真实回执,重复批准和重试关联同一业务操作;对象删除或权限撤回不能靠模型再次建议绕过。

阻止不可信内容取得行动权

检索文档、OCR、网页与工具输出都是数据,即使写着“系统指令”也不能授予权限。提示词边界只能辅助,最小权限、目的地限制和独立确认才约束实际后果。前端默认禁用原始 HTML,或用成熟净化器处理;链接还需单独校验协议与目标。外链图片、预览器和预取也可能把私密文本编码进 URL 发走,必须约束自动网络请求。没有工具调用也不能判定安全,注入仍可能悄悄改变总结结论。

将引用变成可核查的证据

RAG 的检索相关、事实正确和引文支持是三个检查点。后端返回稳定来源 ID、标题、版本及片段位置,前端让重要断言能打开对应上下文,而非任由模型编造文件 URL。检索前、缓存命中时和打开文档时均应保持权限隔离。旧版政策与新版冲突时,按明确的生效规则选取,或呈现冲突与待确认项;真实链接却不支持断言,仍属证据失败。链接过滤也只证明入口允许,不能证明事实或重定向链安全。

把文件隐私贯穿整个生命周期

上传前说明处理方、用途和保留范围,只传任务必需内容;服务端检查归属、实际类型、大小和页数,并隔离预览与提取过程。删除应区分移除会话引用、删除原文件和清理派生文本及索引,不能让删除一个共享引用误删他人仍需的对象。用依赖记录编排清理,界面展示已请求、处理中、完成或失败,验证旧引用、直接访问与缓存。诊断通常只需状态与关联 ID,不应默认复制完整合同或录音正文。

最小示例

javascript
javascript
function safeCitation(raw, origins, base = 'https://kb.example/') {
  if (typeof raw !== 'string' || /[\u0000-\u0020\u007f]/.test(raw)) return null;
  try {
    const url = new URL(raw, base);
    if (url.protocol !== 'https:' || url.username || url.password) return null;
    return origins.has(url.origin) ? url.href : null;
  } catch { return null; }
}
const allowed = new Set(['https://kb.example']);
console.assert(safeCitation('/docs/42', allowed) === 'https://kb.example/docs/42');
console.assert(safeCitation('https://kb.example.evil.test/', allowed) === null);
console.assert(safeCitation('javascript:alert(1)', allowed) === null);

此受控知识库示例拒绝脚本协议、近似域名和内嵌凭据;可信配置提供 origin 集合。它不净化 HTML,也不检查路径权限、事实支持或重定向。更稳妥的产品入口是来源 ID,由服务器鉴权后打开固定文档。若服务器代抓外链,还需逐跳目标及网络地址检查,避免 SSRF。

核验:Node v24.19.0:允许相对知识库路径,拒绝脚本协议、近似域名、凭据、HTTP和控制字符断言通过;不覆盖重定向、权限或SSRF集成。

边界与取舍

边界

  • strict schema 限制结构,不验证当前用户权限、金额合理性或用户批准。
  • 批准记录应在服务端防篡改、防重放;仅禁用按钮无法阻挡脚本请求。
  • 上传同意不涵盖无限用途;前端隐藏成功也不能证明供应商和备份已清除。

取舍

  • 逐项确认增加摩擦,可按可信风险规则分级;不能让模型自行取消必需批准。
  • 详细引用提高审阅能力,但来源元数据和缓存本身也要权限隔离与失效管理。

口述示范

我把模型候选、用户批准和业务回执分开。服务端校验权限与不可变操作,前端准确展示确认范围并安全渲染;引用逐项支持断言,上传和删除覆盖派生数据,不能只处理可见页面。

章节练习

练习 1

设计邮件工具的确认测试:批准后替换收件人、追加附件,再重放旧批准。

展开检查点
  • 确认摘要、批准版本、执行参数来自同一候选记录。
  • 变更、过期、撤权被服务端拒绝;UI 不把模型文字当发送回执。
练习 2

假设 TranslateFlow 使用上传资料回答问题,加入注入文档、外链图片、旧版政策和删除后的引用。

展开检查点
  • 对照干净文档检查结论和网络请求,验证无未授权外传。
  • 引用需支持断言;跨账号、撤权及索引删除均有独立验收。

参考来源与核验边界

核验日期 2026-10-04。结构化工具调用的默认 strict 行为因 API 而异,应显式配置并检查支持范围;短期凭据、文件清理和数据保留按实际端点核验,不把某服务配置写成通用保证。

内容版本:2026-10-04.2 · 题目和来源 ID 保持原样,本站不将面经标签解释为企业官方出题或高频保证。