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。
安全扩展
- 从
src-tauri/gen/schemas/或 plugin 文档中找最窄 permission。 - 对路径、URL、事件名等支持 scope 的权限添加具体范围。
- 只添加到需要它的 window capability。
- 运行
pnpm tauri build --no-bundle,查看 schema 验证错误。
ACL 是第一层,而不是唯一一层。严格 CSP 阻止 webview 离开应用;
external-url.ts 只接受 https: / mailto:,Rust 和 scoped opener 会再次检查。
参见 Architecture。
