Datasette Apps:在 Datasette 内部托管自定义 HTML 应用
今天,我们为Datasette推出了一款全新插件——datasette-apps——并在Datasette项目博客上发布了相关发布公告。 这篇帖子主要介绍了“是什么”,但我接下来会稍作延伸,深入探讨“为什么”。
简而言之:
Datasette Apps 是一套自包含的 HTML+JavaScript 应用程序,运行在严格受限的沙盒环境中,而该沙盒则托管于您的 Datasette 应用中。
这些应用可以使用 JavaScript 对 Datasette 中的数据执行只读的 SQL 查询;如果您对它们进行配置,甚至还可以执行写入操作——只需通过 一些预存查询即可实现。
这里有一个将方案迁移到基于 MessageChannel() 的传输机制上。 MessageChannel() 的优势在于:当页面跳转到其他位置时,该通道会自动关闭,从而彻底消除从不受信任的外部页面发送指令的可能性。
记录查询与错误日志 如果您导航至时间线演示并搜索字符串 “usercontent”,您会看到一些搜索结果,其中嵌入了来自 user-images.githubusercontent.com 域的图片。该域名并未被列入 CSP 允许列表,因此触发了错误提示。
这些错误会被捕获并回传至父窗口,以便在有用的错误日志中显示出来。此举旨在让应用程序的黑客攻击过程变得更加高效,及时揭示那些本应隐藏的问题。
我曾开展过一项。而该评估也发现了真正亟待解决的问题。 我曾允许用户为自己的应用设置 CSP 主机白名单,但 Fable 指出了以下攻击方式:
1. 一位拥有“创建应用”权限的低权限用户,创建了一个应用,该应用会查询 SQLite 中所有可用的表,并将所有数据选择并导出至他们通过 CSP 设置的白名单主机。
2. 接着,他们又诱骗一位拥有私密数据访问权限的管理员访问自己的应用。
3. ……此时,应用便可像那位用户一样执行查询,窃取用户的私密数据! 这显然不可接受。我通过将允许列表的范围限制为“新应用设置-CSP”权限来修复了这一问题——该权限专为可信员工设计。站点管理员也可以通过Datasette 配置允许的 CSP 域列表,普通用户则可以选择加入。这样一来,您就可以像允许 cdnjs.cloudflare.com 一样,让您的用户轻松构建应用,从 CdnJS CDN 加载额外的 JavaScript 库。
我对 Datasette Apps 进行了深入的审视,尤其是其与安全相关的部分。关键的沙盒和 CSP 配置均基于多个由 AI 辅助完成的原型与测试。 目前进展良好 我对此次的初始版本感到非常满意。 Datasette 正在不断拓展其边界,从最初仅为读取数据而生的应用,成长为一个更加丰富的生态系统,助力用户在收集数据后,以多种实用方式加以利用。 Datasette 的起源可以追溯到数据新闻领域。我一直对这样一个问题充满好奇:当记者手中掌握了一大堆关于世界的海量数据时,接下来会发生什么?Datasette 支持对这些数据进行探索与发布。Datasette Agent 则通过 AI 辅助,为这些数据赋予新的解读与洞察。如今,Datasette Apps 正在进一步扩展这一能力,通过构建自定义界面与可视化工具,帮助我们解锁那些深藏于数据背后的精彩故事。
标签: