Skip to content

Security: ismailsoud/adapticv

Security

SECURITY.md

Security Documentation

This document outlines the security measures implemented in the CV Adapter application.

Authentication & Session Management

Firebase Authentication

  • Uses Firebase Auth for user authentication with email/password
  • ID tokens are exchanged for secure session cookies server-side
  • Session cookies are HTTP-only, secure, and use strict SameSite policy
  • Sessions expire after 7 days (reduced from 14 days for better security)

Session Security

  • Server-side session validation in middleware
  • Automatic session refresh when close to expiry (< 1 hour remaining)
  • Session revocation on logout with refresh token invalidation
  • Invalid sessions are automatically cleared

Security Headers

The following security headers are automatically applied:

X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()

Rate Limiting

Server-Side Rate Limiting

  • Authentication endpoints: 5 requests per 15 minutes per IP
  • General API endpoints: 10 requests per 15 minutes per IP
  • Implemented in middleware with automatic blocking

Client-Side Rate Limiting

  • Login attempts: 5 failed attempts trigger 15-minute block
  • Block status stored in localStorage
  • Visual feedback for remaining block time

Password Security

Password Requirements

  • Minimum 8 characters, maximum 128 characters
  • Must contain:
    • At least one uppercase letter
    • At least one lowercase letter
    • At least one digit
    • At least one special character
  • Forbidden common passwords (password, 12345678, etc.)

Password Validation

  • Real-time strength indicator in signup form
  • Server-side validation on all password inputs
  • Client-side validation with visual feedback

Input Validation & Sanitization

Email Validation

  • RFC 5321 compliant email format checking
  • Maximum length validation (254 characters)
  • Automatic lowercase conversion and trimming

Request Validation

  • JSON parsing error handling
  • Input type validation
  • Length limits on all inputs
  • XSS prevention through proper encoding

CSRF Protection

  • Requires X-Requested-With: XMLHttpRequest header on auth requests
  • Validates request origin
  • Session cookies with strict SameSite policy

Audit Logging

All authentication events are logged to Firestore audit_logs collection:

Logged Events

  • Login success/failure
  • Signup success/failure
  • Logout events
  • Session refresh attempts
  • Unauthorized access attempts
  • Invalid session detection
  • Account disabled access attempts

Logged Information

  • Event type and timestamp
  • User ID and email (when available)
  • IP address and User-Agent
  • Success/failure status
  • Additional context data

Role-Based Access Control

User Roles

  • user: Standard user access
  • vip: VIP user with unlimited features
  • admin: Administrative access

Route Protection

  • Middleware validates sessions on protected routes
  • Role verification for admin routes
  • Automatic redirection for unauthorized access

Data Protection

User Data Sanitization

  • Sensitive fields excluded from API responses
  • User activity tracking (last login, last activity)
  • Account status monitoring

Database Security

  • Firestore security rules (configure separately)
  • Indexed fields for efficient queries
  • Audit trail for all authentication events

Security Utilities

Auth Utils (src/lib/auth-utils.ts)

  • Centralized authentication context management
  • Role-based authorization helpers
  • User activity tracking
  • Input validation utilities

Security Config (src/lib/security-config.ts)

  • Centralized security configuration
  • Password policy definitions
  • Rate limiting settings
  • Security header configuration

Deployment Security

Environment Variables

Ensure these are set securely in production:

NODE_ENV=production
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_CLIENT_EMAIL=your-service-account-email
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----..."

Production Recommendations

  1. Enable HTTPS/SSL certificates
  2. Configure proper CORS policies
  3. Set up monitoring and alerting for security events
  4. Regularly rotate service account keys
  5. Implement proper backup and disaster recovery
  6. Consider implementing additional MFA for admin accounts

Security Monitoring

Audit Log Analysis

Monitor the audit_logs collection for:

  • Repeated failed login attempts from same IP
  • Unusual login patterns or times
  • Multiple account access from same IP
  • Failed authorization attempts

Recommended Alerts

  • Multiple failed logins (> 10 per hour)
  • Admin access outside business hours
  • Disabled account access attempts
  • Unusual geographic access patterns

Security Best Practices

For Developers

  1. Never log sensitive data (passwords, tokens)
  2. Validate all inputs on both client and server
  3. Use parameterized queries for database operations
  4. Keep dependencies updated
  5. Follow principle of least privilege

For Users

  1. Use strong, unique passwords
  2. Don't share account credentials
  3. Log out from shared devices
  4. Report suspicious activity immediately

Incident Response

In case of security incidents:

  1. Check audit logs for affected accounts
  2. Revoke sessions for compromised accounts
  3. Monitor for unusual patterns
  4. Update security measures as needed
  5. Document lessons learned

Security Testing

Regular security testing should include:

  • Penetration testing
  • Vulnerability scanning
  • Authentication bypass testing
  • Session management testing
  • Input validation testing
  • Rate limiting verification

For security concerns or questions, please review the audit logs and implement additional monitoring as needed for your specific deployment.

There aren't any published security advisories