Skip to content

Security API Reference ​

TachUI's security system provides comprehensive protection for plugin systems through feature flags and secure implementations.

Core API ​

SecurityFeatureFlags ​

Manages security feature configuration with runtime control.

typescript
import { getSecurityFlags } from '@tachui/core/security'

const flags = getSecurityFlags()

Methods ​

MethodParametersReturnsDescription
isEnabled(feature)feature: keyof SecurityFeatureFlagsConfigbooleanCheck if feature is enabled
enable(feature)feature: keyof SecurityFeatureFlagsConfigvoidEnable a security feature
disable(feature)feature: keyof SecurityFeatureFlagsConfigvoidDisable a security feature
setFlags(config)config: Partial<SecurityFeatureFlagsConfig>voidSet multiple flags at once
getFlags()noneSecurityFeatureFlagsConfigGet current configuration
reset()nonevoidReset to default configuration

Feature Flags ​

typescript
interface SecurityFeatureFlagsConfig {
  PLUGIN_CODE_SIGNING: boolean         // Require signed plugins
  WEBWORKER_SANDBOX: boolean           // Isolate plugins in WebWorkers
  STRICT_INPUT_SANITIZATION: boolean   // Enhanced input validation
  CSP_HEADERS: boolean                 // Content Security Policy
  CAPABILITY_PERMISSIONS: boolean      // Permission system
  SECURITY_DEV_MODE: boolean          // Development warnings
}

SecurePluginManager ​

Drop-in replacement for TachUIPluginManager with security features.

typescript
import { createSecurePluginManager } from '@tachui/core/security'

const manager = createSecurePluginManager(tachUIInstance)

Methods ​

MethodParametersReturnsDescription
install(plugin, options?)plugin: TachUIPlugin | SignedPlugin, options?: PluginOptionsPromise<void>Install plugin with security checks
uninstall(pluginName)pluginName: stringPromise<void>Uninstall plugin with cleanup
hasCapability(pluginName, capability)pluginName: string, capability: PluginCapabilitybooleanCheck plugin capability
updateSecurityConfig(config)config: Partial<SecurityFeatureFlagsConfig>voidUpdate security configuration
getSecurityStatus()noneSecurityStatusGet security status report

SecurityStatus Interface ​

typescript
interface SecurityStatus {
  features: SecurityFeatureFlagsConfig     // Active feature flags
  signedPlugins: string[]                  // List of signed plugins
  sandboxedPlugins: string[]               // List of sandboxed plugins
  permissionedPlugins: string[]            // List of plugins with permissions
}

Plugin Verification ​

PluginVerifier ​

Handles cryptographic verification of plugin signatures.

typescript
import { PluginVerifier } from '@tachui/core/security'

const verifier = new PluginVerifier()

Methods ​

MethodParametersReturnsDescription
verifyPlugin(signedPlugin)signedPlugin: SignedPluginPromise<VerificationResult>Verify plugin signature
addTrustedKey(keyId, publicKey)keyId: string, publicKey: CryptoKeyPromise<void>Add trusted signing key
revokeKey(keyId)keyId: stringvoidRevoke compromised key
isKeyTrusted(keyId)keyId: stringbooleanCheck if key is trusted

Interfaces ​

typescript
interface SignedPlugin {
  plugin: TachUIPlugin
  signature: PluginSignature
  metadata: {
    checksum: string
    size: number
    dependencies: string[]
  }
}

interface PluginSignature {
  signature: string
  algorithm: 'RS256' | 'ES256' | 'none'
  timestamp: number
  issuer: string
  keyId: string
}

interface VerificationResult {
  valid: boolean
  errors: SecurityError[]
  warnings: SecurityWarning[]
  metadata: {
    signedBy: string
    signedAt: Date
    expiresAt?: Date
  }
}

Permission System ​

PermissionManager ​

Implements capability-based access control for plugins.

typescript
import { PermissionManager, PluginCapability } from '@tachui/core/security'

const manager = new PermissionManager()

Methods ​

MethodParametersReturnsDescription
requestPermissions(pluginName, capabilities)pluginName: string, capabilities: PluginCapability[]Promise<PermissionResult>Request permissions for plugin
hasPermission(pluginName, capability)pluginName: string, capability: PluginCapabilitybooleanCheck if plugin has capability
grantPermission(pluginName, capability)pluginName: string, capability: PluginCapabilityvoidGrant additional permission
revokePermission(pluginName, capability)pluginName: string, capability: PluginCapabilityvoidRevoke specific permission
revokePermissions(pluginName)pluginName: stringvoidRevoke all permissions
getPermissions(pluginName)pluginName: stringPluginCapability[]Get plugin permissions
getStatistics()nonePermissionStatisticsGet permission statistics

Plugin Capabilities ​

typescript
enum PluginCapability {
  // Component capabilities
  REGISTER_COMPONENTS = 'component.register',
  MODIFY_DOM = 'dom.modify',
  ACCESS_STYLES = 'styles.access',
  
  // Data capabilities  
  ACCESS_LOCAL_STORAGE = 'storage.local',
  ACCESS_SESSION_STORAGE = 'storage.session',
  MAKE_HTTP_REQUESTS = 'network.http',
  
  // System capabilities
  ACCESS_CLIPBOARD = 'system.clipboard',
  ACCESS_NOTIFICATIONS = 'system.notifications',
  ACCESS_GEOLOCATION = 'system.location',
  
  // Plugin capabilities
  LOAD_OTHER_PLUGINS = 'plugin.load',
  ACCESS_PLUGIN_REGISTRY = 'plugin.registry'
}

Interfaces ​

typescript
interface PermissionResult {
  granted: PluginCapability[]
  denied: PluginCapability[]
}

interface PluginPermissions {
  required: PluginCapability[]
  optional: PluginCapability[]
  denied: PluginCapability[]
}

interface PermissionStatistics {
  totalPlugins: number
  totalPermissions: number
  averagePermissionsPerPlugin: number
  mostUsedCapabilities: PluginCapability[]
}

Input Sanitization ​

InputSanitizer ​

Provides comprehensive input validation and XSS protection.

typescript
import { InputSanitizer } from '@tachui/core/security'

Static Methods ​

MethodParametersReturnsDescription
sanitizeHTML(input)input: stringstringSanitize HTML content
sanitizeString(input)input: stringstringBasic string sanitization
sanitizeURL(input)input: stringstringValidate and sanitize URL
sanitizeNumber(input, schema?)input: any, schema?: NumberSchemanumberValidate number input
sanitizeComponentProps(props, schema)props: T, schema: ComponentPropSchemaSanitizedProps<T>Sanitize component props
getStatistics()noneSanitizationStatisticsGet sanitization statistics

Interfaces ​

typescript
interface ComponentPropSchema {
  [key: string]: {
    type: 'string' | 'html' | 'url' | 'number' | 'boolean' | 'object'
    required?: boolean
    maxLength?: number
    min?: number
    max?: number
    pattern?: RegExp
    allowedValues?: any[]
  }
}

interface SanitizationStatistics {
  htmlSanitizationsCount: number
  urlSanitizationsCount: number
  stringSanitizationsCount: number
  hasDOMPurify: boolean
}

Plugin Sandboxing ​

PluginSandbox ​

Provides isolated execution environment for plugins using WebWorkers.

typescript
import { PluginSandbox } from '@tachui/core/security'

const sandbox = new PluginSandbox(pluginName)

Methods ​

MethodParametersReturnsDescription
loadPlugin(signedPlugin)signedPlugin: SignedPluginPromise<void>Load plugin in sandbox
callPluginMethod(method, args)method: string, args: any[]Promise<any>Execute plugin method
destroy()nonevoidTerminate sandbox
isUsingWebWorker()nonebooleanCheck if using WebWorker
getStatistics()noneSandboxStatisticsGet sandbox statistics

SandboxManager ​

Manages multiple plugin sandboxes.

typescript
import { SandboxManager } from '@tachui/core/security'

const manager = new SandboxManager()
MethodParametersReturnsDescription
createSandbox(pluginName)pluginName: stringPluginSandboxCreate new sandbox
getSandbox(pluginName)pluginName: stringPluginSandbox | undefinedGet existing sandbox
destroySandbox(pluginName)pluginName: stringvoidDestroy specific sandbox
destroyAll()nonevoidDestroy all sandboxes
getAllStatistics()noneSandboxStatistics[]Get all sandbox statistics

Content Security Policy ​

CSPManager ​

Manages Content Security Policy headers and configuration.

typescript
import { CSPManager } from '@tachui/core/security'

Static Methods ​

MethodParametersReturnsDescription
generateCSP(additionalRules?)additionalRules?: Partial<CSPDirectives>stringGenerate CSP header string
applyCSP(customCSP?)customCSP?: stringvoidApply CSP to document
addPluginSource(domain)domain: stringvoidAdd trusted plugin source
configureForDevelopment()nonevoidConfigure for development
configureForProduction()nonevoidConfigure for production
isSupported()nonebooleanCheck CSP support
enableViolationReporting(reportUri)reportUri: stringvoidEnable violation reporting

CSPDirectives Interface ​

typescript
interface CSPDirectives {
  'default-src': string[]
  'script-src': string[]
  'style-src': string[]
  'img-src': string[]
  'font-src': string[]
  'connect-src': string[]
  'frame-src': string[]
  'object-src': string[]
  'base-uri': string[]
  'form-action': string[]
  'frame-ancestors': string[]
  'plugin-types': string[]
  'require-sri-for': string[]
  'upgrade-insecure-requests': boolean
  'block-all-mixed-content': boolean
}

Convenience Functions ​

Quick Configuration ​

typescript
import { 
  enableBasicSecurity,
  enableStrictSecurity,
  disableAllSecurity 
} from '@tachui/core/security'

// Enable basic security (input sanitization + dev warnings)
enableBasicSecurity()

// Enable all security features
enableStrictSecurity()

// Disable all security features (legacy mode)
disableAllSecurity()

Feature Testing ​

typescript
import { 
  isFeatureEnabled,
  testSecurityConfiguration 
} from '@tachui/core/security'

// Check if feature is enabled
if (isFeatureEnabled('WEBWORKER_SANDBOX')) {
  console.log('Sandbox is active')
}

// Test configuration
testSecurityConfiguration({
  PLUGIN_CODE_SIGNING: true,
  WEBWORKER_SANDBOX: true
})

Mock Utilities ​

typescript
import { createMockSignedPlugin } from '@tachui/core/security'

// Create mock signed plugin for testing
const signedPlugin = createMockSignedPlugin(unsignedPlugin)

Error Types ​

SecurityError ​

Represents security-related errors.

typescript
class SecurityError extends Error {
  constructor(message: string, code?: string)
  code?: string
}

SecurityWarning ​

Represents security warnings.

typescript
class SecurityWarning {
  constructor(message: string, code?: string)
  message: string
  code?: string
}

Type Guards ​

Plugin Type Checking ​

typescript
import { isSignedPlugin } from '@tachui/core/security'

// Check if plugin is signed
if (isSignedPlugin(plugin)) {
  // TypeScript knows this is SignedPlugin
  console.log('Signature:', plugin.signature)
} else {
  // TypeScript knows this is TachUIPlugin
  console.log('Unsigned plugin:', plugin.name)
}

Browser Console API ​

When running in development mode, these functions are available in the browser console:

typescript
// Available as window.__TACHUI_SECURITY__
interface ConsoleSecurityAPI {
  enable(feature: keyof SecurityFeatureFlagsConfig): void
  disable(feature: keyof SecurityFeatureFlagsConfig): void
  getFlags(): SecurityFeatureFlagsConfig
  enableBasic(): void
  enableStrict(): void
  disableAll(): void
}

Environment Variables ​

Configure security through environment variables:

bash
# Individual features
TACHUI_PLUGIN_CODE_SIGNING=true|false
TACHUI_WEBWORKER_SANDBOX=true|false
TACHUI_STRICT_INPUT_SANITIZATION=true|false
TACHUI_CSP_HEADERS=true|false
TACHUI_CAPABILITY_PERMISSIONS=true|false
TACHUI_SECURITY_DEV_MODE=true|false

# Presets
TACHUI_SECURITY_PRESET=legacy|basic|strict|development

Released under the MPL-2.0 License.