CORS (Cross-Origin Resource Sharing)
Comma-separated list of allowed origins for CORS requests.Examples:
Additional sources allowed for WebSocket and fetch connections in CSP
connect-src directive.Content Security Policy (CSP)
CSP helps prevent XSS attacks by controlling which resources can be loaded.Enable CSP in report-only mode for testing before enforcement.
true: CSP violations are logged but not blocked (recommended for initial setup)false: CSP violations are blocked (use after testing)
Endpoint URL for receiving CSP violation reports.
Consider using services like report-uri.com or Sentry for CSP reporting.
Default CSP Policy
XyraPanel configures CSP with the following directives:The CSP policy is automatically disabled in development mode for easier debugging.
Rate Limiting
Rate limiting protects against brute force attacks and API abuse.Rate limit storage driver:
lruCache: In-memory LRU cache (default, suitable for single instance)redis: Redis-backed storage (recommended for production with multiple instances)
Number of requests allowed per interval for global rate limit.
Time window in milliseconds for rate limiting (default: 5 minutes).
Per-Route Rate Limits
XyraPanel applies stricter rate limits to sensitive endpoints:| Endpoint | Tokens | Interval | Purpose |
|---|---|---|---|
/api/auth/sign-in/** | 5 | 10 minutes | Prevent login brute force |
/api/auth/forget-password | 5 | 15 minutes | Prevent password reset abuse |
/api/auth/reset-password | 8 | 15 minutes | Limit password resets |
/api/user/2fa/** | 8 | 5 minutes | Protect 2FA operations |
/api/account/password/** | 8 | 5 minutes | Limit password changes |
/api/admin/** | 300 | 1 minute | Allow higher admin traffic |
/api/servers/** | 300 | 1 minute | Server management operations |
| Global default | 150 | 5 minutes | All other endpoints |
These limits are defined in
nuxt.config.ts and can be customized if needed.Security Headers
XyraPanel automatically sets secure HTTP headers in production:Strict-Transport-Security (HSTS)
X-Frame-Options
X-Content-Type-Options
Referrer-Policy
Cross-Origin Policies
Security headers are automatically disabled in development mode.
Request Size Limits
Maximum size for request bodies in megabytes.
Maximum size for file uploads in megabytes.
Configuration Examples
Development
.env
Production (Single Instance)
.env
Production (Multiple Origins)
.env
Testing CSP
Monitoring Rate Limits
Rate limit status is included in response headers:Best Practices
Always use Redis for production
Always use Redis for production
Use
NUXT_SECURITY_RATE_LIMIT_DRIVER="redis" in production environments, especially with multiple instances. LRU cache is only suitable for single-instance development.Test CSP in report-only mode first
Test CSP in report-only mode first
Enable
NUXT_SECURITY_CSP_REPORT_ONLY="true" initially to identify issues before enforcing the policy.Restrict CORS to specific origins
Restrict CORS to specific origins
Never use
* for NUXT_SECURITY_CORS_ORIGIN in production. Always specify exact origins.Monitor rate limit hits
Monitor rate limit hits
Watch for
429 Too Many Requests responses in your logs to identify potential attacks or misconfigured clients.Adjust limits for your traffic
Adjust limits for your traffic
The default rate limits work for most deployments, but high-traffic instances may need higher limits.
Next Steps
Redis Configuration
Set up Redis for rate limiting
Environment Variables
View all configuration options