Security Policies
24 Richtlinien in 9 Kategorien — DSGVO, OWASP, BSI
Zentrale Authentifizierung (Azure AD)
AutomatischJede App muss Azure AD als einzigen Identity Provider nutzen. Keine lokalen Passwörter, keine eigene Benutzerverwaltung.
Session-Sicherheit
AutomatischLogin-Sessions müssen kryptografisch gesichert sein und nach spätestens 8 Stunden ablaufen.
Route-Schutz (Middleware)
AutomatischJede Seite und jede API-Route muss durch die NextAuth-Middleware geschützt sein. Ohne Login kein Zugriff — außer /login und /api/health.
EU-Datenhaltung
ManuellAlle personenbezogenen Daten müssen in der EU gespeichert und verarbeitet werden. Kein Transfer in die USA oder andere Drittländer.
DSGVO-konformes Tracking
AutomatischDas Tracking-System darf keine personenbezogenen Daten (Namen, E-Mails, Adressen) im Klartext speichern.
AI-Datenschutz
AutomatischKI-Aufrufe dürfen keine personenbezogenen Daten an Provider außerhalb der EU senden.
Recht auf Löschung
ReviewJede Person kann verlangen, dass ihre Daten vollständig gelöscht werden ("Recht auf Vergessenwerden").
Einwilligung & Rechtsgrundlage
ReviewJede Datenverarbeitung (Speichern, Auswerten, Weitergeben) braucht eine dokumentierte Rechtsgrundlage.
SSL/TLS Verschlüsselung
ManuellJede Verbindung zur App und zur Datenbank muss verschlüsselt sein. Kein unverschlüsselter HTTP-Traffic.
Firewall & Netzwerk-Segmentierung
ManuellServer und Datenbanken sind per Firewall geschützt. Nur die nötigsten Ports sind offen.
System-Updates
ManuellBetriebssystem, Node.js Runtime und alle Abhängigkeiten müssen aktuell gehalten werden.
npm Audit (keine kritischen Vulnerabilities)
AutomatischKeine verwendeten npm-Pakete mit bekannten Sicherheitslücken. npm audit prüft alle Abhängigkeiten gegen die CVE-Datenbank.
Lockfile vorhanden
Automatischpackage-lock.json muss im Repository committet sein. Fixiert die exakten Versionen aller Abhängigkeiten.
Kein eval() oder dynamisches Code-Execution
AutomatischDer Code darf niemals eval() oder new Function() verwenden. Diese Funktionen führen Strings als Code aus — ein Angreifer könnte darüber beliebigen Code auf dem Server ausführen.
Parametrisierte SQL-Queries
ReviewAlle Datenbank-Abfragen müssen Parameter-Platzhalter ($1, $2) verwenden, nie String-Verkettung mit Benutzereingaben.
XSS-Schutz
AutomatischBenutzereingaben dürfen nie als HTML gerendert werden. React escaped standardmäßig — aber dangerouslySetInnerHTML umgeht diesen Schutz.
Keine Hardcoded Secrets
AutomatischKeine Passwörter, API-Keys, Tokens oder Datenbankzugangsdaten im Quellcode. Alles in Umgebungsvariablen.
.env.example ohne echte Werte
ReviewDie .env.example darf nur Platzhalter enthalten (z.B. DATABASE_URL=postgresql://...), nie echte Zugangsdaten.
Secret-Rotation
ManuellAlle Zugangsdaten werden regelmäßig gewechselt — mindestens jährlich, sofort bei Verdacht auf Kompromittierung.
Datenbank-Backup
ManuellDie Datenbank wird automatisch gesichert. Bei Datenverlust (Fehler, Angriff, Hardware-Ausfall) kann der Zustand zu jedem Zeitpunkt wiederhergestellt werden.
Recovery-Test
ManuellBackups werden regelmäßig getestet, indem eine echte Wiederherstellung durchgeführt wird.
Orchestration Tracking
AutomatischAlle kritischen Operationen (Datenbankänderungen, AI-Aufrufe, Importe, Exporte) werden automatisch protokolliert.
Benutzer-Aktionen loggen
ReviewJede Datenänderung speichert, wer sie wann vorgenommen hat. Lückenloser Audit-Trail.
Health-Check Endpoint
AutomatischJede App hat einen /api/health Endpoint der automatisch alle 60 Sekunden abgefragt wird.
Error-Handling in API-Routes
ReviewJede API-Route fängt Fehler sauber ab und meldet sie an das zentrale Error-Logging. Kein Absturz, keine kryptischen Fehlermeldungen.