This application implements multiple layers of security to protect users:
- Context Isolation: Enabled for all renderer processes
- Node Integration: Disabled to prevent direct Node.js API access
- Sandbox: Enabled for WebContentsView to isolate web content
- Separate Preload Scripts: Main window and web content use different preload scripts
- Main Window UI (Development): Relaxed CSP with
unsafe-inlineandunsafe-evalfor Vite HMR and React DevTools - Main Window UI (Production): Strict CSP without
unsafe-inlineorunsafe-eval - WebContentsView (External Sites): No CSP modification - respects each website's own CSP
- Browser UI is protected while allowing external websites to function normally
- Prevents XSS attacks on the browser UI itself
- Protocol whitelist (only http/https allowed)
- Dangerous protocol blocking (file:, javascript:, data:, etc.)
- Domain blacklist support
- Exact domain matching to prevent subdomain bypasses
- Localhost and private IPs allowed - This is a developer browser, local development servers are essential
- Sender verification for all IPC handlers
- Only main window can send IPC messages
- WebContentsView messages are verified separately
- Security event logging for unauthorized attempts
- Restricted permissions (only clipboard access allowed)
- All other permissions (camera, microphone, geolocation) denied by default
- Permission requests are logged
X-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockReferrer-Policy: strict-origin-when-cross-originPermissions-Policyto disable sensitive features
- DevTools always available - Essential for developers to inspect and debug web applications
- Detailed security logs only in development mode
- Localhost and private network access enabled for local development
-
Regular Dependency Updates
npm run audit # Check for vulnerabilities npm run audit:fix # Auto-fix vulnerabilities npm run outdated # Check for outdated packages
-
Before Deploying
- Run
npm auditto check for vulnerabilities - Update dependencies to latest stable versions
- Test in production mode:
NODE_ENV=production npm start
- Run
-
Adding New Features
- Never use
executeJavaScriptfrom main process - Always validate IPC message senders
- Use preload scripts for safe web content interaction
- Add new domains to blocklist if needed
- Never use
-
Keep the App Updated
- Always use the latest version
- Enable auto-updates if available
-
Be Cautious with URLs
- The app blocks dangerous protocols and domains
- If a site is blocked, there's usually a good reason
-
Report Security Issues
- See "Reporting a Vulnerability" section below
If you discover a security vulnerability, please email the maintainer directly instead of opening a public issue.
DO NOT create a public GitHub issue for security vulnerabilities.
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
- Initial response: Within 48 hours
- Status update: Within 7 days
- Fix timeline: Depends on severity
- Run
npm auditand fix all high/critical vulnerabilities - Update all dependencies to latest stable versions
- Test all security features in production mode
- Verify CSP headers are correct
- Confirm DevTools are accessible (required for developers)
- Test URL validation with various edge cases including localhost
- Verify IPC sender validation works
- Check permission requests are properly denied
- Test local development server access (localhost, 127.0.0.1, etc.)
This browser is specifically designed for developers, which influences some security decisions:
- DevTools Always Available: Unlike consumer browsers, DevTools are accessible in all modes because developers need to inspect and debug web applications
- Localhost Access: Local development servers (localhost, 127.0.0.1, private IPs) are fully accessible - essential for web development
- Clipboard Access: Allowed by default for better developer experience
- Theme Color Extraction: Uses preload script injection which is safer than
executeJavaScriptbut still requires trust in the preload script
- DevTools in Production: While DevTools are powerful debugging tools, they can expose sensitive information. Users should be aware of this when browsing sensitive sites
- Local Network Access: Allowing private IP access means the browser can access internal network resources - useful for development but be cautious on untrusted networks
This document will be updated as new security features are added or vulnerabilities are discovered.
Last updated: 2025-10-16