EN
AI Engineer World's Fair

从 ChatGPT 的 DOM 里一处反常嵌套,推到第三方 UI 隔离的完整取舍

Why MCP and ChatGPT Apps Use Double Iframes — Frédéric Barthelet, Alpic · Frédéric Barthelet

20 min
AgentAI 产品

全片 20 分钟·真正值得盯屏约 8 分钟·3 个必看点

橙色 = 推荐必看的 8 分钟其余读导览就够
逐段导览 · 8 段
  1. 0:15 2:30

    为什么要做 MCP 应用

    先讲清商业动机:ChatGPT 应用商店和 Claude connectors 正在成为企业面向消费级智能体的新获客入口,价值在于对话中被发现,以及能嵌入一块可交互的界面。

    做 MCP 应用的动机不是技术尝鲜,而是一条新的分发渠道。

    这一段是背景陈述,屏幕上基本只有标题和几个产品名,听讲述就够。▶ 跳到 0:15
    讲者 · Frédéric Barthelet
  2. 2:30 3:58

    视图是怎么被渲染出来的

    介绍视图机制:界面永远作为一次工具调用的结果出现,服务器在工具元数据里声明配套 UI,视图本身只是一份可以内联样式的简单 HTML;这些声明在会话开始的工具清单里就已经给出,宿主可以预先缓存。

    视图不是独立页面,而是挂在工具调用结果上、且提前声明好的一份 HTML。

    配合的是元数据结构和调用流程的示意图,扫一眼字段名和箭头方向即可,不必逐帧盯。▶ 跳到 2:30
    讲者 · Frédéric Barthelet
  3. 3:58 5:30

    反常的嵌套与内容安全策略登场

    讲者展示自己检查 ChatGPT 页面结构时的发现——第三方视图被两层 iframe 套着,随后引出理解这一切的关键前提:宿主页面的内容安全策略。

    宿主给自己上的那道安全策略,是后面所有方案被否决的真正原因。

    屏幕上是真实的页面结构,两层嵌套的层级关系肉眼一看就懂,光听描述很难在脑子里搭出来。▶ 跳到 3:58
    讲者 · Frédéric Barthelet
  4. 5:30 10:20

    直接注入这条路为何走不通

    把第三方界面直接以 srcdoc 塞进页面的方案被逐层否决:宿主要求脚本携带每次请求生成的一次性标记,第三方代码根本跑不起来;放宽限制则内层与父页面同源,本地存储和 cookie 全部可被读取;加上沙箱后源变得不透明,依赖源的存储接口又集体失效,而唯一的补救办法等于把父页面的源原样还回去。

    同源、沙箱、可用存储这三者,在直接注入的方案里凑不齐。

    这是一串纯逻辑排除,每否掉一个方案就冒出下一个问题,画面上只有零星代码片段,跟着推理链条听最有效率。▶ 跳到 5:30
    讲者 · Frédéric Barthelet
  5. 10:20 14:23

    换条路仍然堵死,直到双层方案成型

    改成让 iframe 直接加载远程地址同样不成:每个应用自带域名会让宿主的白名单随上架数量无限膨胀;改用统一的中转域虽可行,但等于在自家域名上托管未知的第三方代码,那份责任和成本只有极少数公司担得起。最终答案是外层专用域加载统一 loader、由它创建内层 iframe 注入内容,并按应用划分子域让各自的存储互不相通。

    双层嵌套不是过度设计,是同时满足隔离、可扩展和低成本的唯一落点。

    结尾处的架构示意把两层的域名归属、脚本来源和子域划分画在一张图上,这是全场信息密度最高的一张画面。▶ 跳到 10:20
    讲者 · Frédéric Barthelet
  6. 14:23 17:20

    给自己的应用声明安全策略

    讲规范允许应用自带安全策略:通过外层 iframe 里的特定标签下发,声明的域名会被重写进内层。要连外部接口取数就必须把域名写进对应指令,脚本和网络请求这两条是最要紧的。

    只要视图要发请求,域名就得先声明,否则线上必然被拦。

    配的是策略指令和元数据字段的对照,看清写在哪、写成什么样就行,讲解节奏比画面快。▶ 跳到 14:23
    讲者 · Frédéric Barthelet
  7. 17:20 19:21

    SkyBridge 工具链现场演示

    演示 Alpic 开源的框架:浏览器里就能执行工具、实时预览关联视图并热更新;随后是策略检查器,把声明的域名与实际发出的请求逐条比对,现场新增一个接口调用立刻被标为缺失,补上后转绿。

    开发环境曾经会移除全部安全策略,导致本地一切正常、上线才炸——这类工具的价值就是把问题提前到本地。

    全程是实际操作:改代码、界面刷新、检查项由红转绿,交互反馈本身就是内容,看画面才知道这套工具实际用起来是什么感觉。▶ 跳到 17:20
    讲者 · Frédéric Barthelet
  8. 19:21 19:54

    收尾与现场抽奖

    扫码领取幻灯片和框架试用入口,并以现场给开源仓库加星抽奖的方式收场。

    需要资料的话在这里把二维码截下来。

    只有一张二维码页面,除非要拿链接,否则可以直接跳过。▶ 跳到 19:21
    讲者 · Frédéric Barthelet