Environment Variable Management
Development vs Production
Always maintain separate environment configurations:Secret Storage Best Practices
Local Development
Local Development
- Use
.env.localfor local secrets - Add
.env.localto.gitignore - Never commit secrets to version control
- Use
.env.exampleas a template (with dummy values)
Production Deployment
Production Deployment
- Use platform-specific secret management (Vercel Environment Variables)
- Enable “Sensitive” flag for all secrets
- Use different secrets for preview vs production environments
- Rotate secrets regularly (quarterly recommended)
Team Collaboration
Team Collaboration
- Share secrets via secure password managers (1Password, LastPass)
- Document which secrets are required in README
- Use service accounts for production keys
- Implement least-privilege access
Clerk Security Configuration
Authentication Settings
Configure Clerk for maximum security:Enable Session Security
In Clerk Dashboard → Sessions:
- Enable “Require multi-factor authentication”
- Set session lifetime to 7 days (or less)
- Enable “Auto-lock inactive sessions”
Configure Sign-in Security
In Clerk Dashboard → User & Authentication:
- Require email verification
- Enable password strength requirements
- Consider enabling 2FA for admin users
Set Up Webhook Security
If using Clerk webhooks:
- Enable webhook signature verification
- Use HTTPS endpoints only
- Store webhook signing secret securely
JWT Token Configuration
Ensure proper JWT handling:Convex Security Rules
Database Schema Validation
Define strict schemas for all tables:Query Optimization
Properly index queries to prevent performance-based DOS:Rate Limiting
Consider implementing rate limiting for mutations:Input Validation with Zod
Client-Side Validation
Validate form inputs before submission:Server-Side Validation
Always re-validate on the server:Content Security Policy
Next.js Headers Configuration
Add security headers innext.config.js:
Production Deployment Checklist
Environment Configuration
Environment Configuration
- All production environment variables set
- Development keys removed from production
- Admin user IDs updated for production
- Database URLs point to production instance
- Email settings configured correctly
Authentication & Authorization
Authentication & Authorization
API & Database Security
API & Database Security
- Convex production deployment created
- Database indices properly configured
- Rate limiting implemented
- Input validation on all mutations
- Error messages don’t leak sensitive data
Infrastructure Security
Infrastructure Security
- HTTPS enforced (no HTTP)
- Security headers configured
- CORS properly configured
- API routes protected
- Logging and monitoring enabled
Monitoring & Auditing
Security Logging
Implement audit logs for critical operations:Monitoring Checklist
- Track failed authentication attempts
- Monitor unusual admin activity
- Alert on rapid submission rates
- Log all database mutations
- Track API error rates
Incident Response
Security Breach Protocol
If you suspect a security breach:Immediate Actions
- Revoke potentially compromised API keys
- Rotate all secrets immediately
- Review recent admin actions
- Check for unauthorized data access
Investigation
- Review audit logs
- Check Clerk authentication logs
- Analyze Convex function calls
- Identify scope of breach
Remediation
- Patch security vulnerability
- Reset affected user sessions
- Update security configurations
- Deploy fixes
Regular Maintenance
Quarterly Security Review
- Audit admin user list (remove inactive admins)
- Rotate API keys and secrets
- Review and update dependencies
- Check for new security advisories
- Test authentication flows
- Review access logs for anomalies
Dependency Updates
Resources
Clerk Security
Official Clerk security documentation
Convex Security
Convex authentication and authorization guide
Next.js Security
Next.js security best practices
OWASP Top 10
Common web application security risks
Next Steps
Security Overview
Review AiVault’s security architecture
RBAC
Configure role-based access control