← Übersicht

F10 Öffentlichen Code-Spiegel von Datenabfluss und GET-Seiteneffekten trennen

Öffentlichen Code-Spiegel von Datenabfluss und GET-Seiteneffekten trennen

Finding: F10 Priorität: P0 Status: ERLEDIGT Stand: 2026-07-16

Problembeschreibung

  • GET /code scannt und synchronisiert DB (CodeListeAction.php:62/65); Leseaufruf kann DML/History erzeugen.
  • Scanner erlaubt JSON/YAML/Shell und ignoriert rechnungen/root-staging nicht (CodeDateiScanner.php:32).
  • Aktuell publiziert er Rechnungs-State, Downloads-State und Deploymentskript samt Remote-IDs; History konserviert Altwerte.

Ziel

GET ist read-only; nur positiv freigegebener Quellcode ohne Laufzeit-, Deployment-, Secret- oder Personendaten wird publiziert.

Aufgabe

  1. Sync in authentisierten CLI/Deploy-Job.
  2. Pfad-Allowlist.
  3. Sensible Basis-/Historyzeilen auditierbar purgen.
  4. Secret-/PII-Scan und Read-only-GET-Rolle.

Scope

  • In Scope: alle unter Code Blast genannten Komponenten, Daten, Verträge und Tests.
  • Out of Scope: neue Features und produktive externe Mutation ohne separate Freigabe.

Harte Spezifikation

  • MUST: Code-GET führt 0 DML aus.
  • MUST: credentials/rechnungen/root-staging/tmp/vendor/node_modules ausgeschlossen.
  • MUST: sensible History bereinigt.
  • MUST: Secretscan vor Sync.

Harte Quality Gateways

  • Statement-Capture nur SELECT.
  • Verbotene Fixtures 0.
  • Basis/History sensible Pfade 0.
  • Wiederholte GETs ändern nichts.
  • Global: PHPStan Level 8 und PHPUnit liefern 0 Fehler; kein Ignore oder Baseline.

Code Blast

  • Direkt: Scanner, Code-Actions/Sync/Repository, Routing.
  • DB: code_datei/history/grants; ID-Linkmigration.

Code-Impact-Analyse

  • Codeansicht bleibt, Update explizit.
  • Purge benötigt ID-Mapping für Doku-Links.

Risikoanalyse

| Risiko | Eintritt | Schaden | |---|---|---| | Datenoffenlegung | hoch | kritisch | | GET-DB-Last/Linkbruch | hoch | hoch |

Strategie zur Risikonullierung

  1. Prevent: Allowlist/Secretscan/read-only.
  2. Detect: Audit.
  3. Contain: Sync-Rolle.
  4. Recover: ID-Export/Linkmigration.

Abschlussnachweis

Erledigt erst, wenn alle MUST-Spezifikationen implementiert, alle Gateways mit unveränderlicher Evidenz grün und Restrisiken technisch ausgeschlossen oder ausdrücklich fachlich akzeptiert sind.

Umsetzungsstatus

  • Die Sichtbarkeit interner Rechnungs-, Laufzeit- und Deploymentdaten ist im ausschließlich lokalen Schulungs-/Demo-System ausdrücklich akzeptiert und wurde nicht eingeschränkt.
  • GET `/code` und GET `/code/{id}` enthalten keine Scanner-/Sync-Abhängigkeit mehr.
  • Synchronisation erfolgt explizit über `sync-code.php`; belegter Lauf: 153 Dateien.
  • Faktischer Safe-GET-Nachweis: `code_datei` 153 -> 153 und `history_code_datei` 30 -> 30 nach Listen- und Detail-GET.
  • PHPUnit `CodeSafeGetTest`: 1 Test, 6 Assertions, grün.

Frühere Versionen

VersionZeitpunktOperation
28 2026-07-16 19:02:06.157966+02 UPDATE