访问控制列表
每个 Tauri 命令都向 JavaScript 层公开一个 Rust 函数,该函数可以使用操作系统 API 执行任意操作,默认情况下,该层使用 Web 标准进行沙箱化。 如果攻击者可以执行访问 Tauri 命令的代码,这将给您的应用程序带来风险。
为了缓解这种情况,Tauri 使用访问控制列表(Access Control List;ACL)来限制插件命令的访问。默认情况下,所有插件命令都被阻止,无法访问。若要启用对应用程序所需命令的访问,必须定义需要访问的权限列表。
功能
功能将权限集合与相关的窗口列表进行分组,以便您可以对单窗口和多窗口应用程序配置访问控制。
您可以将功能定义为 src-tauri/capabilities
目录中的 JSON 或 TOML 文件。
下面的 JSON 定义了一个功能,该功能为核心插件和 window.setTitle
API启用默认功能。
目标平台
通过定义 platforms 数组,功能可以是特定于平台的。 默认情况下,该功能适用于所有目标,但您可以选择 linux、macOS、windows、iOS 和 android 目标的一部分。
例如,让我们为桌面定义一个功能。注意,它启用了只能在桌面端使用的插件权限:
并定义移动能力。注意,它启用了只能在移动设备上使用的插件的权限:
JSON 模式
Tauri 生成一个 JSON 模式,包含应用程序可用的所有权限,这样你就可以在 IDE 中实现自动补全。
要使用模式,请将 $schema
属性设置为 capabilities/schemas
目录中的模式之一,这些模式是特定于平台的。
通常你会将其设置为 ../gen/schemas/desktop-schema.json
或 ../gen/schemas/mobile-schema.json
,不过你也可以为特定的目标平台定义功能。
在上面的示例中,我们为桌面端和移动端定义了特定的功能,并引用了相关的 JSON 模式。让我们定义一个仅适用于 Linux 的功能:
多窗口
windows
属性定义了应该引用权限列表的窗口列表。您可以使用通配模式来引用动态窗口标签。
下面的示例将该功能与 main
窗口和任何以 editor-
为前缀的标签窗口连接起来。
作用域
作用域进一步限制命令。它们的格式是特定于插件的,但是 Tauri 提供了允许和拒绝某些命令操作的原语,通常限制命令输入。
例如,fs
插件允许你使用作用域来允许或拒绝某些目录和文件,http
插件使用作用域来过滤允许访问的 url。
让我们研究一些官方插件的例子:
- 允许任何
fs
命令访问应用程序数据目录:
- 允许
fs
rename
命令访问主目录:
- 配置
http
插件的作用域:
远程访问
默认情况下,每个功能只适用于应用程序的嵌入式内容(无论是你的 devUrl
还是 frontendDist
前端)。
如果你想允许远程 URL 访问 Tauri 命令(这很危险,需要仔细配置),你可以使用 context
属性。
在下面的例子中,我们将该功能与任何 tauri.app
子域名关联。
© 2024 Tauri Contributors. CC-BY / MIT