Security & Compliance
Comprehensive security measures, compliance frameworks, and data protection policies implemented in FlowCampaign to ensure safe and legal email campaign management.
Security Architecture
Multi-Layer Security Model
1. Infrastructure Security
- Cloudflare Edge Network: DDoS protection, WAF, rate limiting
- Zero Trust Architecture: Verify every request
- Network Segmentation: Isolate different components
- DDoS Protection: Automatic mitigation at edge
2. Application Security
- Input Validation: All user inputs sanitized and validated
- Output Encoding: Prevent XSS attacks
- SQL Injection Prevention: Parameterized queries only
- CSRF Protection: Token-based request validation
- CSP Headers: Content Security Policy enforcement
3. Data Security
- Encryption at Rest: AES-256 for sensitive data
- Encryption in Transit: TLS 1.3 for all connections
- Key Management: Secure key storage and rotation
- Data Masking: Sensitive data obscured in logs
- Secure Deletion: Cryptographic data destruction
Authentication & Authorization
Multi-Factor Authentication (MFA)
Supported MFA Methods
-
TOTP (Time-based One-Time Password)
- Compatible with Google Authenticator, Authy, etc.
- 30-second rotation period
- Backup codes generation
-
Email-based Verification
- Secondary email confirmation
- One-time codes for sensitive operations
- Login attempt notifications
-
Hardware Security Keys (Future)
- FIDO2/WebAuthn support
- Physical security key authentication
MFA Enforcement Policies
{
"mfa_policies": {
"admin_users": {
"required": true,
"methods": ["totp", "email"],
"grace_period": "7 days"
},
"standard_users": {
"required": false,
"recommended": true,
"risk_based": true
},
"api_keys": {
"required": false,
"ip_restriction": true
}
}
}
Role-Based Access Control (RBAC)
Pre-defined Roles
| Role | Permissions | Description |
|---|---|---|
| Super Admin | Full system access | System administration |
| Admin | All functional access | Organization administration |
| Campaign Manager | Campaign CRUD, analytics | Marketing team lead |
| Content Creator | Campaign creation, templates | Marketing team member |
| Analyst | Read-only analytics | Data analysis only |
| API User | API access only | Integration applications |
Custom Role Creation
// Create custom role
const customRole = {
name: "Regional Manager",
permissions: {
campaigns: ["read", "create"],
contacts: ["read", "update"],
analytics: ["read"],
templates: ["read", "use"]
},
restrictions: {
data_scope: "region:us-west",
rate_limit: "500/hour",
ip_range: ["192.168.1.0/24"]
}
};
API Authentication
API Key Security
{
"api_key": {
"format": "fc_live_sk_xxxxxxxxxxxxxxxxxxxxxxxx",
"prefix": "fc_live_sk_",
"length": 32,
"character_set": "a-z0-9",
"rotation": "90 days"
},
"security": {
"hashed_storage": true,
"rate_limiting": true,
"ip_whitelisting": false,
"expiration": true,
"usage_tracking": true
}
}
JWT Token Security
// JWT configuration
const jwtConfig = {
algorithm: "HS256",
expiration: "24h",
refresh_token_expiration: "7d",
issuer: "flowcampaign",
audience: "flowcampaign-api",
secret_rotation: "180 days"
};
Data Protection
Encryption Standards
At-Rest Encryption
{
"database_encryption": {
"algorithm": "AES-256-GCM",
"key_management": "Cloudflare Workers Secrets",
"encrypted_fields": [
"provider_credentials",
"contact_custom_fields",
"api_keys",
"user_tokens"
]
},
"file_encryption": {
"uploaded_files": "AES-256-CTR",
"exported_data": "AES-256-CBC",
"backup_files": "AES-256-GCM"
}
}
In-Transit Encryption
// TLS configuration
const tlsConfig = {
minimum_version: "TLSv1.3",
preferred_ciphers: [
"TLS_AES_256_GCM_SHA384",
"TLS_CHACHA20_POLY1305_SHA256"
],
certificate_rotation: "90 days",
hsts: {
max_age: 31536000,
include_subdomains: true,
preload: true
}
};
Data Classification
Sensitivity Levels
| Level | Description | Examples | Protection Required |
|---|---|---|---|
| P1 - Critical | Highly sensitive | API keys, passwords, encryption keys | Full encryption, strict access controls |
| P2 - Confidential | Business sensitive | Campaign strategies, contact lists | Encryption, role-based access |
| P3 - Internal | Internal business data | Analytics, performance metrics | Access controls, logging |
| P4 - Public | Public information | Published templates, documentation | Basic access controls |
Data Retention Policies
{
"retention_policies": {
"user_data": {
"active_users": "Indefinite",
"inactive_users": "2 years",
"deleted_users": "30 days (soft delete)"
},
"campaign_data": {
"sent_campaigns": "5 years",
"draft_campaigns": "1 year",
"campaign_analytics": "3 years"
},
"contact_data": {
"active_contacts": "Indefinite",
"unsubscribed": "1 year",
"bounced": "90 days"
},
"log_data": {
"access_logs": "90 days",
"audit_logs": "1 year",
"error_logs": "30 days"
}
}
}
Compliance Frameworks
GDPR Compliance
Data Processing Principles
- Lawfulness, Fairness, Transparency: Clear privacy notices
- Purpose Limitation: Data collected for specified purposes only
- Data Minimization: Collect only necessary data
- Accuracy: Keep data accurate and up-to-date
- Storage Limitation: Delete when no longer needed
- Integrity & Confidentiality: Protect against unauthorized processing
- Accountability: Demonstrate compliance
Data Subject Rights
| Right | Implementation | Response Time |
|---|---|---|
| Right to Access | Data export feature | 30 days |
| Right to Rectification | Profile editing | Immediate |
| Right to Erasure | Account deletion | 30 days |
| Right to Restrict Processing | Account suspension | Immediate |
| Right to Data Portability | Export in standard format | 30 days |
| Right to Object | Opt-out mechanisms | Immediate |
| Rights re: Automated Decision Making | Human review available | 30 days |
GDPR Implementation Features
// GDPR compliance module
const gdprModule = {
features: {
consent_management: true,
data_export: true,
data_deletion: true,
privacy_by_design: true,
dpa_management: true,
breach_notification: true
},
configurations: {
default_retention: "2 years",
auto_deletion: true,
cookie_consent: true,
privacy_policy_url: "/privacy"
}
};
CAN-SPAM Compliance
Requirements Implementation
-
Accurate Header Information:
- From, To, Reply-To accurately identify sender
- No misleading subject lines
-
Clear Identification as Advertisement:
- Required "ADV" label for promotional emails
- Clear commercial nature disclosure
-
Physical Address Inclusion:
- Valid physical postal address in every email
- Address validation during setup
-
Unsubscribe Mechanism:
- Clear and conspicuous unsubscribe link
- One-click unsubscribe processing
- 10-day processing requirement
-
Honor Opt-out Requests:
- No charges for unsubscribe
- No sharing email after unsubscribe
- No additional messages after unsubscribe
CAN-SPAM Monitoring
{
"can_spam_monitoring": {
"required_elements": {
"physical_address": true,
"unsubscribe_link": true,
"sender_identification": true,
"subject_accuracy": true
},
"compliance_checks": {
"pre_send_validation": true,
"template_review": true,
"address_verification": true,
"unsubscribe_processing": "within_24_hours"
}
}
}
CCPA/CPRA Compliance
California Consumer Rights
- Right to Know: What personal information is collected
- Right to Delete: Request deletion of personal information
- Right to Opt-Out: Opt-out of sale/sharing of personal information
- Right to Correct: Request correction of inaccurate information
- Right to Limit: Limit use of sensitive personal information
- Right to Non-Discrimination: Not be discriminated against for exercising rights
CCPA Implementation
// CCPA compliance features
const ccpaFeatures = {
data_mapping: true, // Track data flows
opt_out_mechanism: true, // "Do Not Sell My Info" link
verifiable_requests: true, // Request verification process
service_provider_agreements: true,
minors_protection: true // Special rules for under 16
};
Other Regional Compliance
LGPD (Brazil)
- Data protection officer requirement
- Data processing records
- Impact assessment for high-risk processing
PIPEDA (Canada)
- Consent for collection, use, disclosure
- Individual access to information
- Challenging compliance
PDPA (Singapore)
- Consent obligation
- Purpose limitation
- Notification obligation
Security Monitoring & Incident Response
Security Monitoring
Real-time Monitoring
{
"security_monitoring": {
"intrusion_detection": {
"failed_logins": "5+ attempts triggers alert",
"unusual_activity": "geographic/behavioral anomalies",
"api_abuse": "unusual API patterns"
},
"vulnerability_scans": {
"frequency": "weekly",
"tools": ["OWASP ZAP", "Nessus", "Snyk"],
"reporting": "automated to security team"
},
"log_analysis": {
"retention": "1 year",
"analysis": "SIEM integration",
"alerting": "real-time for critical events"
}
}
}
Threat Intelligence
- Integration: Cloudflare Threat Intelligence
- IP Reputation: Block known malicious IPs
- Malware Detection: Scan uploaded files
- Phishing Protection: Detect phishing campaigns
- DDoS Mitigation: Automatic attack mitigation
Incident Response Plan
Incident Classification
| Severity | Description | Response Time | Examples |
|---|---|---|---|
| Critical | System compromise, data breach | Immediate | Unauthorized access, data exfiltration |
| High | Security vulnerability, DoS | 2 hours | Vulnerability exposure, service disruption |
| Medium | Policy violation, suspicious activity | 24 hours | Unusual login patterns, policy breach |
| Low | Security enhancement opportunity | 7 days | Security recommendation, minor issues |
Response Procedures
-
Detection & Analysis:
- Identify incident scope
- Preserve evidence
- Notify security team
-
Containment & Eradication:
- Isolate affected systems
- Remove malicious access
- Patch vulnerabilities
-
Recovery:
- Restore from backups
- Validate system integrity
- Resume normal operations
-
Post-Incident:
- Root cause analysis
- Implement improvements
- Update documentation
Third-Party Security
Vendor Risk Management
Security Assessment Checklist
{
"vendor_assessment": {
"data_processing": {
"data_types": ["contacts", "campaigns", "analytics"],
"processing_purpose": "email delivery, analytics",
"data_transfers": "encrypted, limited scope"
},
"security_controls": {
"encryption": "AES-256 or equivalent",
"access_controls": "RBAC implemented",
"audit_logging": "comprehensive logging",
"incident_response": "documented procedures"
},
"compliance": {
"certifications": ["SOC 2", "ISO 27001"],
"gdpr_compliance": "DPA signed",
"data_sovereignty": "data location specified"
}
}
}
Approved Email Providers
| Provider | Security Certification | Data Location | Encryption |
|---|---|---|---|
| ZeptoMail | SOC 2 Type II, ISO 27001 | US, EU options | TLS 1.3, AES-256 |
| Custom SMTP | Depends on provider | Variable | Configurable |
| Sandbox | Internal testing only | Development | Mock encryption |
Secure Development Lifecycle
Security Practices
- Security Requirements: Define security requirements upfront
- Threat Modeling: Identify potential threats during design
- Secure Coding: Follow OWASP guidelines, use security libraries
- Code Review: Security-focused code reviews
- Security Testing: SAST, DAST, penetration testing
- Deployment Security: Secure deployment practices
- Monitoring & Response: Ongoing security monitoring
Security Training
- Annual Security Awareness: All employees
- Secure Coding Training: Development team
- Incident Response Drills: Quarterly exercises
- Compliance Updates: Regular compliance training
Audit & Certification
Security Audits
Internal Audits
- Frequency: Quarterly
- Scope: All security controls
- Methodology: NIST CSF framework
- Reporting: Executive summary with findings
External Audits
- Frequency: Annually
- Auditor: Independent security firm
- Standards: ISO 27001, SOC 2
- Reports: Available to enterprise customers
Compliance Certifications
Current Certifications
- SOC 2 Type II: Security, availability, confidentiality
- ISO 27001: Information security management
- GDPR: Data protection compliance
- CAN-SPAM: Email compliance
Planned Certifications
- ISO 27701: Privacy information management
- PCI DSS: Payment card security (if applicable)
- HIPAA: Healthcare data security (if applicable)
Privacy by Design
Privacy Principles Integration
Data Minimization
// Collect only necessary data
const contactSchema = {
required: ["email"],
optional: ["first_name", "last_name"],
sensitive: ["phone", "address"], // Requires explicit consent
prohibited: ["ssn", "credit_card"] // Never collected
};
Purpose Limitation
{
"data_purposes": {
"email": "Required for communication",
"name": "Personalization of emails",
"company": "Segmentation and targeting",
"location": "Geographic analytics",
"consent_records": "Compliance documentation"
},
"usage_restrictions": {
"no_third_party_sharing": true,
"no_automated_decision_making": true,
"no_profiling_without_consent": true
}
}
Transparency
- Privacy Policy: Clear, understandable language
- Cookie Banner: Granular consent options
- Data Processing Records: Available to users
- Contact Information: Easy access to DPO
Security Configuration
Security Headers
# Security headers configuration
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'self'";
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
Rate Limiting Configuration
// Rate limiting settings
const rateLimits = {
api: {
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100, // Limit each IP to 100 requests per window
message: "Too many requests, please try again later."
},
auth: {
windowMs: 60 * 60 * 1000, // 1 hour
max: 5, // 5 failed attempts per hour
message: "Too many failed login attempts."
},
email_sending: {
windowMs: 24 * 60 * 60 * 1000, // 24 hours
max: 10000, // 10,000 emails per day
message: "Daily sending limit exceeded."
}
};
Emergency Procedures
Data Breach Response
-
Immediate Actions:
- Isolate affected systems
- Preserve forensic evidence
- Notify security team
-
Assessment:
- Determine scope and impact
- Identify affected data subjects
- Assess regulatory requirements
-
Notification:
- Regulatory authorities (72 hours for GDPR)
- Affected individuals
- Internal stakeholders
-
Remediation:
- Fix security vulnerabilities
- Enhance security controls
- Update incident response plan
Business Continuity
- Backup Strategy: Daily encrypted backups
- Recovery Time Objective (RTO): 4 hours
- Recovery Point Objective (RPO): 24 hours
- Disaster Recovery Site: Geographically separated
Security Contacts: Report security issues to security@nssoftwaresolutions.in
Compliance Documentation: Full compliance documentation available for enterprise customers upon request.
FlowCampaign is built with security and compliance as foundational principles, ensuring your email campaigns are managed safely and legally.