Tauri 的安全机制是其核心优势之一,通过多层防护确保应用安全:
权限系统
Tauri 采用最小权限原则,默认情况下前端无法访问系统资源。需要在 tauri.conf.json 中显式声明权限:
json{ "tauri": { "allowlist": { "fs": { "all": false, "readFile": true, "writeFile": true, "scope": ["$HOME/*"] }, "shell": { "all": false, "open": true } } } }
内容安全策略(CSP)
通过 CSP 限制资源加载和脚本执行:
rusttauri::Builder::default() .plugin(tauri_plugin_csp::Builder::new() .default_policy(ContentSecurityPolicy { default_src: vec!["'self'"], script_src: vec!["'self'"], style_src: vec!["'self'"], ..Default::default() }) .build())
作用域限制
为文件系统、Shell 等操作设置作用域,防止访问敏感路径:
json{ "fs": { "scope": ["$HOME/documents/*", "$APPDATA/*"] } }
协议白名单
限制 WebView 可以访问的协议和域名:
json{ "tauri": { "security": { "csp": "default-src 'self'", "dangerousDisableAssetCspModification": false } } }
Rust 后端隔离
- Rust 代码在独立进程中运行
- 前端无法直接执行 Rust 代码
- 所有系统调用都通过 Tauri 的 API 进行
最佳实践
- 只授予必要的最小权限
- 使用 CSP 限制资源加载
- 验证和清理所有用户输入
- 定期更新依赖项
- 审计第三方插件的安全性