Security Architecture
A transparent overview of how MAISNER protects user data, credentials, and platform integrity. We believe security should be visible, not hidden.
Transport & Network
All traffic is encrypted via TLS 1.2 and 1.3. HTTP requests are permanently redirected to HTTPS. HSTS is enforced with a 1-year max-age, preventing protocol downgrade attacks.
LET'S ENCRYPT · AUTO-RENEWTwo-layer rate limiting: nginx blocks excessive requests at the network edge (30 req/min general, 60/min API per IP). FastAPI middleware adds per-user limits on compute-intensive endpoints.
NGINX + PYTHON LAYERAll responses include: Strict-Transport-Security, X-Frame-Options (DENY), X-Content-Type-Options (nosniff), X-XSS-Protection, Referrer-Policy, and Permissions-Policy.
OWASP RECOMMENDEDNginx sits in front of the application server, handling TLS termination, rate limiting, and request forwarding. The application port (8000) is not exposed publicly.
NGINX · UBUNTU 24.04Authentication & Access Control
User sessions are managed via signed JSON Web Tokens. Tokens are short-lived and validated server-side on every request. No session state is stored on the server.
HS256 · STATELESSPasswords are hashed using bcrypt with a cost factor of 12. Plain-text passwords are never stored or logged. Even in the event of a data breach, passwords cannot be recovered.
BCRYPT · COST 12Admin endpoints are protected server-side with role verification on every request. Admin UI elements are hidden client-side, but access is enforced at the API level (HTTP 403 for unauthorized requests).
SERVER-SIDE ENFORCEMENTEach user's portfolios are stored in isolated directories scoped to their username. API endpoints validate ownership on every read/write operation. Cross-user data access is not possible.
PATH ISOLATIONData Protection
Full platform backups run nightly at 03:00 UTC via cron. Rotation policy: 7 daily, 8 weekly, 12 monthly snapshots. Backups include all user portfolios, configurations, and application files.
DAILY · 7+8+12 ROTATIONAll significant user actions are logged with timestamps, user identity, and operation details. Logs are retained and accessible via the admin panel for audit purposes.
JSONL · APPEND-ONLYPlatform analytics are self-hosted (Umami) on the same infrastructure. No data is sent to Google, Meta, or any advertising platform. Analytics are GDPR-compliant and privacy-first.
SELF-HOSTED · GDPRMarket data is fetched from FMP Professional and Polygon APIs over HTTPS. API keys are stored as environment variables and never exposed in application code or client-side responses.
ENV VARS · NEVER CLIENT-SIDEAutomated Security Audit Results
MAISNER application code (21,923 lines across all Python modules) was scanned with Bandit v1.9.4 on 11 April 2026. Only issues in MAISNER's own code are reported — third-party library internals are excluded.
Infrastructure
Responsible Disclosure
If you discover a security vulnerability in MAISNER, please report it responsibly. Do not publicly disclose issues before we have had the opportunity to address them. Contact: maisnerplatform@gmail.com