Skip to content

Security: elizonapp/ignite-old

Security

SECURITY.md

Sicherheitsüberblick

Dieses Dokument fasst zentrale Sicherheitsmechanismen der Ignite-Anwendung zusammen. Es dient als Leitfaden für Entwicklerinnen, Administratorinnen und Auditor*innen.


Authentifizierung & Autorisierung

  • Session-Verwaltung: verifySession liest Cookies/Token, withAuth und withAdmin (bzw. withAdminAndParams) schützen API-Routen.
  • Rollenmodell: Primäre Rollen sind USER, ADMIN, SUPPORT. Admin-spezifische Endpunkte prüfen user.role.
  • Zwei-Faktor-Authentifizierung: /api/account/2fa/* (siehe docs/api-account.md).
  • Self-Protection: Einige Admin-Endpoints verhindern Selbständerungen (/api/admin/users/{id} → Konto des eigenen Admins kann nicht manipuliert werden).

CSRF-Schutz

  • Hook useCSRF: Liefert secureRequest, das CSRF-Token (z. B. aus Cookie/Header) automatisch an POST/PUT/DELETE-Requests anhängt (siehe docs/checkout.md).
  • Middleware: API-Routen setzen/verifizieren CSRF-Token, besonders für sensitive Aktionen (Checkout, Einstellungen).

Eingabevalidierung

  • Zod/Custom Checks: Admin-Endpoints (z. B. /api/admin/ipv4/assignments, /api/admin/pricing, /api/admin/settings) nutzen strikte Validierungen, um unzulässige Daten zu blocken.
  • Sanitizing: /api/search entfernt gefährliche Zeichen (Script-Tags, Event-Handler) aus Query.
  • Settings: validateSettingValue (in /api/admin/settings) prüft Typ, Min/Max, Optionslisten.
  • Discounts/Affiliate: Prozent-/Code-Validierung (z. B. max 75 %, Zeichenfilter).

Datenzugriff & Filter

  • Ownership-Checks: /api/services/[id], /api/services/[id]/permissions (via checkServiceAccess) stellen sicher, dass nur Besitzer*innen/Admins Zugriff haben.
  • Admin-Only: /api/admin/* Routen sind konsequent durch withAdmin geschützt.
  • Support-Staff: /api/admin/tickets erlaubt Ticket-Erstellung nur für ADMIN/SUPPORT.
  • Cache & Credentials: OVH/Proxmox-Endpoints erstellen automatische Consumer Keys, geben Debug-Infos nur im Admin-Bereich aus.

Rate Limiting

  • Beispiel: /api/vps/validate nutzt createRateLimit (500 Requests/Minute/IP).
  • Weitere Limits können über Middleware ergänzt werden (z. B. Login/Signup).

Secrets & Konfiguration

  • Environment Variablen:
    • OVH (OVH_APPLICATION_KEY, OVH_APPLICATION_SECRET, OVH_CONSUMER_KEY)
    • Proxmox (API-Token, Secret), Mollie (MOLLIE_API_KEY)
  • SettingsService verwaltet Konfigurationen (Datacenter, Pricing-Limits) in der Datenbank.
  • Admin-Endpoints (/api/admin/proxmox, /api/admin/ovh) bieten Debug-Tools, warnen bei fehlenden Berechtigungen.

Seed & Demo-Daten

  • /api/admin/seed (siehe docs/admin/api-admin-seed.md) ist nur in Entwicklungsumgebungen aktiv (Prüfung auf NODE_ENV und DATABASE_URL). Erstellt Standard-Settings, Admin-User und Beispielprodukte.

Logging & Monitoring

  • console.log/console.warn/console.error werden kritisch eingesetzt (Zahlungsstatus, Provisionierung, Fehler).
  • getProxmoxStatistics & andere Admin-Funktionen loggen externe API-Fehler, um Debugging zu erleichtern.
  • Benachrichtigungen (prisma.notification.create) informieren Nutzer*innen über Dokument-Bewertungen, Verifikationsstatus etc.

Empfehlungen

  1. OAuth/Session-Härtung: Cookies HttpOnly, Secure, SameSite=strict.
  2. Audit Logging: Wichtige Admin-Aktionen (Rollenwechsel, Balance-Anpassungen, Verifizierungsstatus) zentral protokollieren.
  3. Monitoring: Rate-Limits, Payment-Fehler, Proxmox/OVH-Verbindungsprobleme in APM/Logging aufnehmen.
  4. Secrets Management: Verwendung eines Secret-Stores (z. B. Vault, AWS Secrets Manager).
  5. Penetration Tests: Regelmäßige Tests für Checkout, Admin-Panel und API-Schnittstellen.

Weiterführende Dokumente

  • docs/api-auth.md – Authentifizierung & Sessions.
  • docs/api-account.md – Account-spezifische Sicherheitsfunktionen (2FA, Password-Reset).
  • docs/api-services.md, docs/api-files.md – Zugriffskontrolle & Validierungen.
  • docs/admin/api-admin-*.md – Feinsteuerung der Admin-Endpunkte (OVH, Proxmox, Settings, Verification).

There aren't any published security advisories