Capabilities

保护桌面 shell 的声明式 Tauri ACL。

Tauri 的安全边界是声明式 capabilities ACL,而不是 preload script。Webview 只能 使用分配给所属窗口的 API;未授权的调用会在 Rust core 中、应用代码运行前被拒绝。 模板目前只有 src-tauri/capabilities/default.json,并且只作用于 main 窗口。

实际授权

该文件以 core:default 开始,随后逐项授予窗口最小化/最大化/拖动/关闭等控制、webview zoom 和事件监听;还包括 deep-link、window-state、store、dialog、文件读写、autostart、 log、notification、global-shortcut、os/process。

外部打开器是最重要的 scoped grant:opener:allow-open-url 只允许 https://**mailto:*,无法打开 file:javascript: 或任意 custom scheme。文件中的原则是: 绝不使用 wildcard grant

安全扩展

  1. src-tauri/gen/schemas/ 或 plugin 文档中找最窄 permission。
  2. 对路径、URL、事件名等支持 scope 的权限添加具体范围。
  3. 只添加到需要它的 window capability。
  4. 运行 pnpm tauri build --no-bundle,查看 schema 验证错误。

ACL 是第一层,而不是唯一一层。严格 CSP 阻止 webview 离开应用; external-url.ts 只接受 https: / mailto:,Rust 和 scoped opener 会再次检查。 参见 Architecture

On this page