init bootstrap

This commit is contained in:
Fran Jurmanović
2025-07-06 15:02:09 +02:00
commit 016728532c
47 changed files with 8894 additions and 0 deletions

505
docs/SECURITY.md Normal file
View File

@@ -0,0 +1,505 @@
# Security Documentation
## Overview
This document outlines the comprehensive security measures implemented in the Bootstrap App. The application follows industry best practices and security standards to protect against common threats and vulnerabilities.
## Security Architecture
### Defense in Depth
The application implements multiple layers of security:
1. **Network Security**: HTTPS, CORS, security headers
2. **Authentication**: JWT token-based authentication
3. **Authorization**: Role-based access control (RBAC)
4. **Input Security**: Validation, sanitization, size limits
5. **Data Security**: Encryption, secure storage
6. **Monitoring**: Audit logging, security event tracking
7. **Infrastructure**: Secure deployment practices
## Authentication System
### JWT (JSON Web Tokens)
**Implementation**:
- RS256/HS256 signing algorithms
- Configurable token expiration (default: 24 hours access, 7 days refresh)
- Secure token storage and transmission
- Token revocation support
**Security Features**:
- Cryptographically secure secret generation
- Token payload minimization
- Automatic token expiration
- Refresh token rotation
**Configuration**:
```env
JWT_SECRET=base64-encoded-secret-64-bytes
JWT_ACCESS_TTL_HOURS=24
JWT_REFRESH_TTL_DAYS=7
JWT_ISSUER=omega-server
```
### Password Security
**Hashing**:
- bcrypt with cost factor 12
- Salt automatically generated per password
- Resistant to rainbow table attacks
**Password Policy**:
- Minimum 8 characters
- Must contain uppercase, lowercase, number, special character
- Common password detection
- Password strength scoring (0-100)
**Additional Security**:
- Account lockout after failed attempts
- Password history prevention
- Secure password reset flow
## Authorization System
### Role-Based Access Control (RBAC)
**Components**:
- **Users**: Individual user accounts
- **Roles**: Collections of permissions (admin, user, viewer)
- **Permissions**: Granular access rights (user:create, user:read, etc.)
**Permission Format**:
```
resource:action
Examples: user:create, role:delete, system:admin
```
**Default Roles**:
- **admin**: Full system access
- **user**: Standard user privileges
- **viewer**: Read-only access
### Permission Checking
**Implementation**:
```go
// Middleware-based permission checking
app.Get("/api/v1/users", authMW.HasPermission("user:read"), controller.GetUsers)
// Service-level permission checking
if !user.HasPermission("user:create") {
return errors.New("insufficient permissions")
}
```
## Input Security
### Validation & Sanitization
**Input Validation**:
- JSON schema validation
- Type checking
- Range validation
- Format validation (email, UUID, etc.)
**Input Sanitization**:
- HTML entity encoding
- SQL injection prevention
- XSS protection
- Path traversal prevention
**Request Limits**:
- Maximum request size: 10MB
- Request timeout: 30 seconds
- Header size limits
- URL length limits
### Content Security
**Content-Type Validation**:
- Strict content-type checking
- File upload validation
- MIME type verification
- Extension whitelist
**File Upload Security**:
- Virus scanning integration points
- File size limits
- Storage isolation
- Access control
## Network Security
### HTTPS/TLS
**Requirements**:
- TLS 1.2+ minimum
- Strong cipher suites
- Perfect Forward Secrecy
- HSTS headers
**Certificate Management**:
- Automated certificate renewal
- Certificate pinning options
- Certificate transparency monitoring
### CORS (Cross-Origin Resource Sharing)
**Configuration**:
```env
CORS_ALLOWED_ORIGIN=https://yourdomain.com,https://app.yourdomain.com
```
**Security Headers**:
- Strict origin validation
- Credential handling
- Preflight request validation
### Security Headers
**Implemented Headers**:
```http
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: default-src 'self'
Referrer-Policy: strict-origin-when-cross-origin
```
## Rate Limiting
### Multi-Layer Rate Limiting
**Global Rate Limiting**:
- 100 requests per minute per IP
- Configurable limits per endpoint
- Token bucket algorithm
**Authentication Rate Limiting**:
- 5 login attempts per 15 minutes
- Progressive delays for failed attempts
- Account lockout protection
**API Rate Limiting**:
- Per-user rate limits
- Per-endpoint specific limits
- Burst capacity handling
### Implementation
```go
// Global rate limiting
app.Use(securityMW.RateLimit(100, 1*time.Minute))
// Authentication rate limiting
app.Post("/auth/login", securityMW.AuthRateLimit(), authController.Login)
```
## Data Protection
### Encryption
**Encryption at Rest**:
- Database field-level encryption for sensitive data
- AES-256-GCM encryption
- Secure key management
**Encryption in Transit**:
- TLS 1.2+ for all communications
- Certificate validation
- Perfect Forward Secrecy
**Key Management**:
```env
ENCRYPTION_KEY=32-character-hex-key # 256-bit key
```
### Data Classification
**Sensitive Data Types**:
- Passwords (hashed with bcrypt)
- Personal information (encrypted)
- Authentication tokens (secure storage)
- System secrets (environment variables)
**Data Handling**:
- Minimal data collection
- Data retention policies
- Secure data deletion
- Access logging
## Audit & Monitoring
### Audit Logging
**Logged Events**:
- Authentication attempts (success/failure)
- Authorization decisions
- Data access and modifications
- Administrative actions
- Security events
**Audit Log Format**:
```json
{
"id": "uuid",
"userId": "user-id",
"action": "create",
"resource": "user",
"resourceId": "target-user-id",
"success": true,
"ipAddress": "192.168.1.1",
"userAgent": "Browser/1.0",
"timestamp": "2024-01-01T12:00:00Z",
"details": {...}
}
```
### Security Event Monitoring
**Event Types**:
- Brute force attempts
- Privilege escalation attempts
- Suspicious activity patterns
- Rate limit violations
- Authentication anomalies
**Response Actions**:
- Automatic account lockout
- Rate limit enforcement
- Security team notifications
- Event correlation
## Vulnerability Management
### Security Testing
**Automated Testing**:
- Static code analysis
- Dependency vulnerability scanning
- Security unit tests
- Integration security tests
**Manual Testing**:
- Penetration testing
- Code review
- Security architecture review
- Threat modeling
### Dependency Management
**Security Practices**:
- Regular dependency updates
- Vulnerability scanning
- License compliance
- Supply chain security
**Go Module Security**:
```bash
go mod tidy
go list -m -u all
go mod download
```
## Incident Response
### Security Incident Types
**Authentication Incidents**:
- Brute force attacks
- Credential stuffing
- Account takeover
**Authorization Incidents**:
- Privilege escalation
- Unauthorized access
- Permission bypass
**Data Incidents**:
- Data breach
- Data exposure
- Data integrity issues
### Response Procedures
**Detection**:
- Automated monitoring alerts
- Log analysis
- User reports
- Security team monitoring
**Response**:
1. Incident containment
2. Impact assessment
3. Evidence preservation
4. Stakeholder notification
5. Recovery procedures
6. Post-incident review
## Secure Configuration
### Environment Security
**Production Settings**:
```env
GO_ENV=production
DEBUG_MODE=false
LOG_LEVEL=WARN
```
**Secret Management**:
- Environment variable storage
- Secure secret generation
- Secret rotation procedures
- Access control for secrets
### Database Security
**Security Measures**:
- Connection encryption
- Prepared statements (SQL injection prevention)
- Access control
- Backup encryption
**Configuration**:
- Minimal database privileges
- Regular security updates
- Connection pooling limits
- Query logging for monitoring
## Compliance & Standards
### Security Standards
**Frameworks**:
- OWASP Top 10 compliance
- NIST Cybersecurity Framework
- ISO 27001 principles
- PCI DSS guidelines (where applicable)
**Security Controls**:
- Access control (AC)
- Audit and accountability (AU)
- Configuration management (CM)
- Identification and authentication (IA)
- System and communications protection (SC)
### Privacy Protection
**Data Protection**:
- GDPR compliance considerations
- Data minimization principles
- User consent management
- Right to deletion
**Privacy by Design**:
- Default privacy settings
- Data encryption
- Access logging
- User control over data
## Deployment Security
### Secure Deployment
**Build Security**:
- Secure build pipeline
- Dependency verification
- Binary signing
- Vulnerability scanning
**Runtime Security**:
- Minimal attack surface
- Process isolation
- Resource limits
- Security monitoring
### Infrastructure Security
**Server Hardening**:
- OS security updates
- Unnecessary service removal
- Firewall configuration
- Intrusion detection
**Container Security** (if applicable):
- Minimal base images
- Security scanning
- Runtime protection
- Resource limits
## Security Maintenance
### Regular Security Tasks
**Daily**:
- Security log review
- Incident monitoring
- Threat intelligence updates
**Weekly**:
- Vulnerability assessment
- Security metric review
- Access review
**Monthly**:
- Security training updates
- Policy review
- Penetration testing
- Security architecture review
### Security Updates
**Update Process**:
1. Security advisory monitoring
2. Impact assessment
3. Testing in staging
4. Coordinated deployment
5. Verification testing
**Emergency Updates**:
- Critical vulnerability response
- Out-of-band patching
- Incident coordination
- Communication procedures
## Security Contact Information
### Reporting Security Issues
**Internal Team**:
- Security team email: security@company.com
- Incident hotline: +1-XXX-XXX-XXXX
- Escalation procedures: [Internal documentation]
**External Researchers**:
- Security disclosure policy
- Responsible disclosure program
- Bug bounty program (if applicable)
- PGP key for encrypted communication
### Security Training
**Developer Training**:
- Secure coding practices
- Security testing procedures
- Incident response training
- Regular security updates
**User Training**:
- Security awareness
- Password best practices
- Phishing recognition
- Incident reporting
## Conclusion
This security documentation outlines the comprehensive security measures implemented in the Bootstrap App. Regular review and updates of these security practices ensure ongoing protection against evolving threats.
For questions about security implementations or to report security issues, please contact the security team through the designated channels.
**Last Updated**: [Current Date]
**Next Review**: [Review Date]
**Document Version**: 1.0