05 - Security Architecture

Overview

OpenAlgo implements defense-in-depth security with multiple layers protecting the application from various attack vectors. The security architecture covers authentication, authorization, transport security, input validation, and monitoring.

Security Layers Diagram

Layer 1: Transport Security

HTTPS Configuration

Attribute
Value
Purpose

HttpOnly

True

Prevents JavaScript access (XSS protection)

SameSite

Lax

CSRF protection while allowing top-level navigation

Secure

True (HTTPS)

Cookies only sent over HTTPS

__Secure- prefix

HTTPS only

Additional browser validation

Layer 2: Network Security

IP Banning System

Location: utils/security_middleware.py

IP Ban Model:

Rate Limiting

Location: limiter.py

Rate Limit Configuration:

Endpoint
Limit
Purpose

/auth/login

5/min, 25/hour

Brute force protection

/{broker}/callback

5/min, 25/hour

OAuth abuse prevention

/auth/reset-password

15/hour

Password reset spam

/api/v1/*

Per-endpoint

API abuse prevention

Usage Example:

404 Error Tracking

Tracks suspicious 404 errors for potential attack detection:

Layer 3: Browser Security

Content Security Policy (CSP)

Location: csp.py

CSP Directives:

Directive
Default Value
Purpose

default-src

'self'

Fallback for all resources

script-src

'self' https://cdn.socket.io

JavaScript sources

style-src

'self' 'unsafe-inline'

CSS sources

connect-src

'self' wss: ws:

API and WebSocket connections

img-src

'self' data:

Image sources

object-src

'none'

Block plugins (Flash, etc.)

frame-ancestors

'self'

Clickjacking protection

CORS Configuration

Location: cors.py

Additional Security Headers

Layer 4: Application Security

CSRF Protection

Location: app.py

CSRF Token Flow:

Frontend Implementation:

Password Security

Argon2 Hashing with Pepper:

Password Requirements:

API Key Security

Three-Level Verification:

Session Security

Layer 5: Data Security

Auth Token Encryption

Fernet Encryption for Broker Tokens:

Database Isolation

Five separate databases prevent cross-contamination:

Database
Contents
Sensitivity

openalgo.db

Users, auth tokens, orders

High

logs.db

Traffic logs, IP bans

Medium

latency.db

Performance metrics

Low

sandbox.db

Paper trading data

Medium

historify.duckdb

Historical market data

Low

Sensitive Data Protection

Log Redaction:

Security Configuration Summary

Environment Variables

Security Checklist

Startup Validation

Security Best Practices

  1. Always use HTTPS in production

  2. Never log sensitive data (passwords, tokens)

  3. Use rate limiting on all authentication endpoints

  4. Implement IP banning for abusive IPs

  5. Keep API_KEY_PEPPER secure and backed up

  6. Monitor 404 errors for attack detection

  7. Use secure cookie attributes

  8. Implement proper CSRF protection

Key Files Reference

File
Purpose

app.py

Security initialization

csp.py

Content Security Policy

cors.py

CORS configuration

limiter.py

Rate limiting

utils/security_middleware.py

IP banning middleware

database/auth_db.py

Password/API key hashing

database/traffic_db.py

IP ban model

Last updated