Skip to content

Security: MuhammadMuazAhmed/ArtMarket_Backend

Security

SECURITY.md

πŸ”’ Security Implementation Guide

Overview

This document outlines the comprehensive security measures implemented in the Art Marketplace backend application to protect against common web vulnerabilities and ensure data integrity.

πŸ›‘οΈ Security Features Implemented

1. HTTP Headers Protection (Helmet)

  • Content Security Policy (CSP): Prevents XSS attacks by controlling resource loading
  • HSTS: Forces HTTPS connections in production
  • X-Frame-Options: Prevents clickjacking attacks
  • X-Content-Type-Options: Prevents MIME type sniffing
  • X-XSS-Protection: Additional XSS protection for older browsers
  • Referrer Policy: Controls referrer information leakage

2. Rate Limiting

  • Authentication Endpoints: 5 requests per 15 minutes
  • File Uploads: 10 uploads per 15 minutes
  • General API: 100 requests per 15 minutes
  • IP-based Limiting: Prevents abuse from single sources
  • User-based Limiting: Additional protection for authenticated users

3. CORS Configuration

  • Restricted Origins: Only allows specified frontend domains
  • Secure Headers: Limits exposed headers and methods
  • Credentials Support: Enables secure cross-origin requests
  • Preflight Handling: Proper OPTIONS request handling

4. Data Sanitization & Validation

  • Input Sanitization: Removes XSS vectors from all inputs
  • Data Validation: Comprehensive validation using express-validator
  • SQL Injection Prevention: MongoDB with parameterized queries
  • File Upload Security: Strict file type and size validation

5. Environment Security

  • Secret Management: All sensitive data in environment variables
  • Configuration Validation: Automatic validation of required settings
  • Production Checks: Enforces security requirements in production
  • Secure Defaults: Safe fallback values for development

πŸ”§ Configuration

Environment Variables

# Required for production
NODE_ENV=production
MONGO_URI=mongodb+srv://...
JWT_SECRET=your-64-character-secret
FRONTEND_URL=https://yourdomain.com

# Security configuration
CORS_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
RATE_LIMIT_MAX_REQUESTS=100
AUTH_RATE_LIMIT_MAX=5
UPLOAD_RATE_LIMIT_MAX=10
MAX_FILE_SIZE=5242880

Security Headers

// Additional security headers set
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
Permissions-Policy: geolocation=(), microphone=(), camera=()

🚨 Security Threats Mitigated

Cross-Site Scripting (XSS)

  • βœ… Input sanitization middleware
  • βœ… Content Security Policy
  • βœ… XSS protection headers
  • βœ… Data validation and escaping

Cross-Site Request Forgery (CSRF)

  • βœ… CORS origin validation
  • βœ… SameSite cookie attributes
  • βœ… Origin verification

SQL Injection

  • βœ… MongoDB with parameterized queries
  • βœ… Input validation and sanitization
  • βœ… No direct SQL queries

File Upload Vulnerabilities

  • βœ… File type validation
  • βœ… File size limits
  • βœ… Filename sanitization
  • βœ… Path traversal prevention

Brute Force Attacks

  • βœ… Rate limiting on auth endpoints
  • βœ… Account lockout mechanisms
  • βœ… Secure password requirements

Information Disclosure

  • βœ… Error message sanitization
  • βœ… Stack trace hiding in production
  • βœ… Secure error handling

πŸ“‹ Security Checklist

Development

  • All environment variables configured
  • Strong JWT secrets generated
  • CORS origins properly set
  • Rate limits configured
  • File upload limits set

Production

  • HTTPS enabled
  • Strong secrets (32+ characters)
  • Environment validation passing
  • Security headers verified
  • Rate limiting active
  • File upload security enabled

Monitoring

  • Security logs enabled
  • Rate limit monitoring
  • Error tracking configured
  • Performance monitoring active

πŸ› οΈ Security Testing

Manual Testing

# Test rate limiting
curl -X POST http://localhost:5000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"test"}'

# Test CORS
curl -H "Origin: http://malicious.com" \
  -H "Access-Control-Request-Method: POST" \
  -H "Access-Control-Request-Headers: X-Requested-With" \
  -X OPTIONS http://localhost:5000/api/auth/login

# Test file upload security
curl -X POST http://localhost:5000/api/artworks/create \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "[email protected]" \
  -F "title=Test" \
  -F "price=100"

Automated Testing

# Run security tests
npm run test:security

# Run validation tests
npm run test:validation

# Run rate limiting tests
npm run test:ratelimit

πŸ” Security Monitoring

Logs to Monitor

  • Rate limit violations
  • Authentication failures
  • File upload attempts
  • Validation errors
  • CORS violations

Alerts to Set

  • High rate of failed logins
  • Unusual file upload patterns
  • API abuse detection
  • Security header violations

πŸ“š Best Practices

Code Security

  • Always validate and sanitize inputs
  • Use parameterized queries
  • Implement proper error handling
  • Log security events
  • Regular dependency updates

Infrastructure Security

  • Use HTTPS everywhere
  • Implement proper firewall rules
  • Regular security audits
  • Monitor access logs
  • Backup security

Operational Security

  • Regular secret rotation
  • Access control reviews
  • Security training for team
  • Incident response plan
  • Regular penetration testing

πŸ†˜ Incident Response

Security Breach Steps

  1. Immediate Response

    • Isolate affected systems
    • Preserve evidence
    • Notify security team
  2. Investigation

    • Analyze logs and events
    • Identify attack vector
    • Assess damage scope
  3. Recovery

    • Patch vulnerabilities
    • Restore from backups
    • Update security measures
  4. Post-Incident

    • Document lessons learned
    • Update security procedures
    • Conduct security review

πŸ“ž Security Contacts

πŸ”— Additional Resources


Last Updated: December 2024
Version: 1.0
Maintainer: Security Team

There aren’t any published security advisories