The application uses Tauri 2.x's enhanced permission system for secure access control:
-
Core Permissions
- Explicitly defined permissions for each capability
- Granular control over API access
- Window-specific permission sets
-
File System Security
- Path traversal protection
- Secure file operations
- Directory scoping
- Permission guards on file operations
-
IPC Security
- Command permission validation
- Message integrity checks
- Scoped API access
- Permission Guards
fn attachment_guard<R: Runtime>(
app: &AppHandle<R>,
cmd: &tauri::command::CommandItem,
) -> Result<(), tauri::Error> {
if cmd.message.permissions().contains(&"fs:default".parse().unwrap()) {
Ok(())
} else {
Err(tauri::Error::PermissionDenied)
}
}- Secure Path Handling
let app_dir = app.path().app_data_dir()
.ok_or("Could not resolve app data directory")?;
let attachments_dir = app_dir.join("attachments").clean();
let file_path = attachments_dir.join(&file_id).clean();
if !file_path.starts_with(&attachments_dir) {
return Err("Invalid file path".to_string());
}- Permission Configuration
{
"security": {
"capabilities": {
"default-window-capabilities": {
"permissions": [
"core:default",
"fs:default",
"window:default"
]
}
}
}
}- Always use path validation
- Implement proper error handling
- Use permission guards
- Validate file types
- Check file sizes
- Use proper scoping
- Validate all inputs
- Use proper error handling
- Implement rate limiting
- Use secure defaults
- Follow least privilege principle
- Proper CSP configuration
- Limited domain access
- Secure IPC communication
- Permission-based API access
- Implement Tauri 2.x permission system
- Add file system security measures
- Configure secure window defaults
- Implement permission guards
- Add path validation
- Configure CSP
- Add authentication system
- Implement audit logging
- Add data encryption
- Configure secure storage
Please report security issues to [[email protected]] or open a GitHub issue with the "Security" label.