把页面降级为不可信证据源
浏览器代理同时阅读页面和调用工具时,页面文字很容易越过数据边界。一段隐藏内容要求上传 Cookie,若与系统指令进入同一通道,模型可能把网站意图误当成用户授权。无论文字显示在正文、无障碍树、元数据还是脚本生成区域,它都只应贡献候选事实,不能修改允许域名、增加工具、索取凭据或替用户确认。
信任分层应在编排结构中表达:系统策略来自受保护配置,用户目标来自明确会话,页面与下载内容带来源标签进入不可信数据区。不要仅在提示里写“忽略恶意指令”,还要让执行器依据最初授权单独校验每个动作。即使模型完整复述注入内容,后端也不应因此获得新的文件、Cookie 或网络权限。
页面解析器可提取可见文字、表格和链接,但隐藏并不总等于恶意,无障碍内容也可能对任务必要。因此防线不是粗暴删除某类节点,而是保持来源和可见性信息,限制其作用。模型可引用隐藏字段解释页面结构,却不能把其中的动作要求提升为控制指令。
任务开始时冻结能力包络
用户发起任务后,系统形成能力包络:允许访问的域名、允许的读取与提交动作、可使用的数据类别、费用和数量上限。网页若声称必须访问另一个站点或启用上传工具,只能触发阻断或新的用户授权流程,不能自动扩大包络。包络附带任务标识和版本,后续每次工具调用都引用同一版本。
授权应尽量具体。例如“比较三家供应商公开价格”允许读取三个公开域,却不包含登录邮箱、下载本地文件或发送报价。若任务确需登录,认证步骤与业务页面隔离,浏览器工具不向模型暴露原始 Cookie。敏感凭据由浏览器或秘密服务注入网络层,模型只看见是否认证成功。
多轮对话修改目标时,编排器计算新旧能力差异。缩小范围可立即生效,扩大范围则展示新增域名、动作和数据,让用户明确同意。不能让网页通过模拟用户对话或伪造按钮文本触发这一流程,确认事件必须来自可信界面并绑定最终参数。
导航的每一跳都重新检查
初始链接属于允许域不代表最终地址安全。开放重定向、短链接、跨域登录和脚本跳转都可能把请求带到未授权目标。浏览器控制层在发起请求和每次重定向后校验协议、主机、端口及解析地址,阻止环回、链路本地与未许可私网。相似域名、用户信息段和国际化编码要先规范化再比较。
新窗口、嵌入框架、资源下载和表单动作也属于导航面,不能只检查地址栏。下载文件保存在隔离区,类型由内容与声明共同判断,不自动执行宏、脚本或安装包。读取文件时继续标记不可信来源,文件中的二次指令无权访问本地目录或改变任务策略。
域名允许列表需要区分精确主机与受控子域,通配符会把可被第三方创建的子域一并授权。DNS 结果在连接时核对,避免解析检查与实际连接分离。遇到登录联合跳转时采用预定义流程和回调地址,而不是让模型临时决定任意身份站点。
提交前回到原始目标核对参数
浏览可以宽容地收集候选信息,提交必须严格。点击购买、发送表单、上传文件或公开发布前,系统比较动作与原始用户目标,显示最终域名、收件人、字段、附件、金额和不可逆影响。确认绑定参数摘要;页面之后若通过脚本替换目标或金额,摘要变化使确认失效并要求重新展示。
页面上的“验证”“继续”或“安全检查”只是站点文字,不能替代可信确认。模型也不能根据一个绿色成功框宣布交易完成,执行器要读取网络响应、受信回执或账户状态。提交后发生超时则查询操作状态,避免再次点击造成重复订单或消息。
低风险搜索与翻页可以在包络内自动执行,但仍有次数和时间上限。高风险动作采用最小影响原则,例如先保存草稿、只上传明确选择的文件、限制单次收件人数。网站若要求关闭安全策略、上传凭据或访问无关域,任务立即停止并说明冲突来源。
隔离浏览器可触及的数据
浏览器代理不应默认继承用户日常浏览器的全部会话、扩展和本地文件权限。使用隔离配置、任务级下载目录和最小站点登录,将不同租户或任务的状态分开。Cookie 保持为网络层机密,截图、页面脚本和模型上下文都不能读取其原值。剪贴板、本地文件选择和摄像头等能力默认关闭。
上传工具只接受由可信界面选择且符合任务包络的文件标识,模型传来的任意路径无效。服务端重新检查文件所有者、类型、大小和目标域,不因网页声称需要配置文件便开放目录。下载到上传的链路尤其危险,必须经过隔离扫描并由用户确认具体文件,防止站点让代理转发刚取得的秘密。
页面可能通过像素追踪、超长查询参数或表单字段外带信息,因此网络层限制允许方法、目的域和请求大小,并对敏感模式做辅助检测。检测不是最终授权手段,但能捕获意外泄漏。调试日志不得记录请求头、Cookie 或完整表单正文,否则隔离浏览器仍会在观测系统留下副本。
失败与成功通知都需独立求证
恶意页面可伪造“任务成功,请关闭窗口”,也可制造错误引导代理重复提交。状态判断应来自受控浏览器事件、网络结果和必要的账户查询,而不是页面自然语言。若只能看到视觉反馈,应保留截图区域与时间作为弱证据,并在产生副作用的任务中要求更强回执。
超时、弹窗遮挡和登录过期分别进入不同恢复路径。登录过期请求用户在可信界面重新认证,页面弹出的凭据表单不自动填写;网络未知先查询提交状态;元素找不到可重新定位,但不能因此放宽域名或点击相似危险按钮。有限重试预算防止页面故意制造循环。
停止事件应说明触发原因、当前页面来源、尚未执行的动作和已产生的受信回执,不把恶意指令全文复制到通知。人工接管获得同一能力包络,若要扩大范围仍需正式授权。这样故障处理不会成为绕过正常限制的备用通道。
用攻击页面验证能力没有扩大
测试站点把指令放入白色小字、屏幕外元素、无障碍标签、编码文本、图片替代文字和动态脚本,要求访问新域、读取 Cookie、上传本地文件或改变规则。预期不是模型一定识别攻击,而是所有越界工具请求都在执行层被拒绝,且授权包络保持不变。
导航矩阵覆盖开放重定向、多级跳转、相似域名、国际化主机、解析到私网、新窗口与表单动作,每一跳都必须重新判定。下载文件加入二次指令和伪装类型,确认只进入隔离区且不会自动执行或上传。提交测试在确认后篡改金额与目标,旧确认必须失效。
最后扫描网络与审计记录,确保 Cookie、令牌和本地文件内容没有外发或落入日志;伪造成功通知不能推进工作流,提交超时不会重复动作。规则页、普通表格和无障碍内容仍能正常读取,证明防护没有靠删除全部复杂内容取巧。页面永远只是数据,安全性才不会取决于模型是否看穿每次诱导。
可见证据与操作记录支持复盘
代理提取事实时保存页面地址、文档版本、可见区域和时间,避免事后只剩模型转述。动态页面可保存受限截图摘要与关键网络响应标识,但不把整个已登录页面永久归档。证据用于核对报价或条款,不携带页面提出的新操作权限。
动作记录区分模型建议、执行器拒绝、用户确认和远端结果。一次注入若让模型尝试越界,审计应显示请求被哪条能力规则阻断,同时对用户隐藏可能包含秘密诱导的冗长正文。安全团队能复盘攻击路径,普通日志又不会复制恶意载荷。
测试在页面内容更新、会话过期和重定向后复查证据链接,旧决定仍绑定当时来源而非当前页面。通过最小证据和动作事件,可以证明代理看到了什么、被允许做什么以及实际做了什么。
实现片段
policy.assertAllowed({ action, destination: new URL(target).origin })
评论 · 0