Skip to content

Sicherheit

Robert Einsle edited this page Oct 19, 2026 · 1 revision

Wie openwehr gegen Lücken abgesichert wird und wie man eine meldet, steht in SECURITY.md. Kurz:

  • Updates: Dependabot schlägt jede Woche Updates aller Abhängigkeiten vor (PHP, JavaScript, Docker-Basis-Image, GitHub-Actions); Sicherheitsupdates sofort. Jede Änderung läuft durch alle Tests, bevor ein Image entsteht.
  • Prüfungen bei jedem Push und Pull Request (GitHub-Workflow „Build & Deploy“, Job „Security Checks“): composer audit und npm audit (bekannte Schwachstellen), Larastan (statische Analyse, Level 5; alte Befunde in phpstan-baseline.neon, neuer Code muss sauber sein), Gitleaks (versehentlich eingecheckte Geheimnisse). Das Docker-Image wird vor dem Veröffentlichen mit Trivy gescannt; kritische Lücken mit verfügbarer Korrektur stoppen es.
  • Wöchentlich (Workflow „Security“): dieselben Audits und ein Scan des veröffentlichten Images latest – auch ohne Änderung, weil täglich neue Schwachstellen bekannt werden. Funde stehen im Security-Tab des Repositorys.
  • KI-Sicherheitsreview: Pull Requests prüft die GitHub-Action „Claude Code Security Review“ (Workflow „Claude Security Review“; braucht das Repository-Secret ANTHROPIC_API_KEY, sonst wird sie übersprungen). Lokal geht dasselbe mit /security-review in Claude Code.
  • In der App: Security-Header auf jeder Antwort (X-Content-Type-Options, X-Frame-Options – außer dem öffentlichen Kalender zum Einbetten –, Referrer-Policy, Permissions-Policy, HSTS unter HTTPS und eine Content-Security-Policy, vorerst im Beobachtungsmodus „Report-Only“). Hochgeladene Dateien werden mit festem Dateityp ausgeliefert, nur PDFs und Fotos öffnen im Browser, alles andere wird heruntergeladen. CSV-Exporte entschärfen Zellen, die in Excel als Formel laufen würden. Externe Kalender lassen sich nur von öffentlichen Adressen abrufen. Links in Mails nehmen ihre Adresse immer aus APP_URL. Session-Cookies sind unter HTTPS automatisch Secure.
  • Einladungslinks: Den Login-Link als QR-Code oder zum Kopieren zeigt die Personalverwaltung nur für Kameraden, die sich noch nie angemeldet haben (Admins für jeden); alle anderen bekommen die Einladung per Mail an ihre eigene Adresse. Mails mit Login- oder Aktionslinks werden im Mail-Protokoll ohne Inhalt gespeichert.

Clone this wiki locally