AI News HubLIVE
站内改写2 分钟阅读

Datasette Apps:在 Datasette 中托管自定义 HTML 应用程序

Datasette Apps 是一个新插件,允许用户在 Datasette 实例中通过严格沙盒化的 iframe 运行自包含的 HTML+JavaScript 应用程序。这些应用可以执行只读 SQL 查询,并可通过存储查询支持写操作。该插件利用 iframe sandbox 属性和内容安全策略(CSP)确保安全,使用 postMessage 和 MessageChannel 实现锁定 API,并支持通过可复制提示由 AI 生成应用代码。文章还讨论了安全漏洞修复、日志记录以及 Datasette 从数据展示向丰富工具生态系统演进的愿景。

Datasette 推出了一款名为 Datasette Apps 的新插件,它使用户能够在 Datasette 实例中托管和运行自包含的 HTML+JavaScript 应用程序。这些应用运行在高度受限的 iframe 沙盒中,无法访问父页面的 DOM、cookies 或 localStorage,并且通过注入内容安全策略(CSP)头来阻止向外部主机发送 HTTP 请求,从而防止恶意或存在缺陷的应用泄露私有数据。

该插件的核心是提供一种安全的方式来扩展 Datasette 的功能。应用可以使用 JavaScript 对 Datasette 中的数据库执行只读 SQL 查询,如果配置了存储查询,还可以执行写入操作。最初,这一功能是为 Datasette Agent 设计的类似 Claude Artifacts 的机制,但后来被提升为 Datasette 生态系统中一个独立的概念。

在技术实现上,Datasette Apps 使用了 iframe sandbox="allow-scripts" 结合 CSP 的巧妙组合。开发者发现,通过在 HTML 页面开头使用 <meta http-equiv="Content-Security-Policy"> 设置策略,可以进一步限制 iframe 的能力,而且恶意 JavaScript 无法修改或移除该头。为了在锁定框架的同时允许受控的操作,插件先使用 postMessage() 实现了一个简单协议,随后迁移到 MessageChannel() 以提高安全性——当页面导航到其他位置时,通道会自动关闭,防止来自不可信外部页面的命令执行。

此外,Datasette Apps 还包含了可见的查询和错误日志功能,帮助开发者调试应用。对于写操作,它利用 Datasette 1.0a31 中升级的存储查询功能,允许用户创建特定的写入查询,并仅授权给特定应用使用,从而降低了风险。

一个显著的特点是,创建应用的表单末尾包含一个可复制的提示,其中包含了所有必要信息(如选定数据库的架构)。用户可以将这个提示粘贴到 ChatGPT、Claude 或 Gemini 等 AI 工具中,让它们生成相应的 HTML 代码。如果安装了 Datasette Agent,AI 助手还能直接创建和编辑应用。

在开发过程中,AI 辅助发挥了重要作用。最初的原型使用 Claude Opus 4.6 构建,随后 GPT-5.5 帮助设计了整体架构,Claude Fable 5 则进行了一次安全评估,发现了一个严重漏洞:低权限用户可以通过创建应用并利用 CSP 允许列表,诱骗管理员访问并窃取其数据。该问题通过引入 apps-set-csp 权限和站点级 allowed_csp_origins 配置得到修复。

总体而言,Datasette Apps 标志着 Datasette 从只读数据服务向更丰富工具生态系统的演进。它延续了 Datasette 在数据新闻领域的根基,现在通过自定义界面和可视化,帮助用户从数据中发掘故事。