fix(dms): apierror.Normalize verbirgt 5xx-Texte (QA-15 F-14) #375

Closed
patrick wants to merge 1 commits from fix/dms-httpharden-normalize into main
pull from: fix/dms-httpharden-normalize
Owner

Problem

dms/internal/apierror.Normalize gab bei Status >= 500 den vom Handler geschriebenen Text unverändert an den Aufrufer. Interne Fehlertexte (DB-, Pfad-, Verbindungsfehler) konnten so nach außen gelangen. internal/apierror und archive/internal/apierror verschleiern 5xx bereits (QA-15 F-14), dms war beim Nachziehen vergessen worden. Normalize ist in dms/internal/apiwiring/apiwiring.go:151 für die App aktiv, die Lücke betrifft also alle DMS-Endpunkte.

Änderung

  • 5xx: Antwort Interner Fehler plus correlation_id; Originaltext nur im Server-Log mit derselben ID
  • 4xx unverändert (fachlicher Text bleibt)
  • Test 5xx angepasst, neue Tests: kein Interna-Leck im 5xx-Body, correlation_id nur bei 5xx

Nicht Teil dieses PRs: httpharden.ListenAndServe in dms wickelt Normalize nicht selbst ein (Root/Archive tun es). Für die App unkritisch (Wrapping über apiwiring), betrifft nur den Metrics-Listener des Workers.

Verifikation (Host 131)

go vet ./... und gofmt sauber, go test ./... in dms ohne DSN ohne Fehlschlag. Tests, die ein 5xx-Body-Format erwarten und eine DB brauchen, wurden übersprungen; Lauf mit Test-DB steht aus.

🤖 Generated with Claude Code

## Problem `dms/internal/apierror.Normalize` gab bei Status >= 500 den vom Handler geschriebenen Text unverändert an den Aufrufer. Interne Fehlertexte (DB-, Pfad-, Verbindungsfehler) konnten so nach außen gelangen. `internal/apierror` und `archive/internal/apierror` verschleiern 5xx bereits (QA-15 F-14), `dms` war beim Nachziehen vergessen worden. `Normalize` ist in `dms/internal/apiwiring/apiwiring.go:151` für die App aktiv, die Lücke betrifft also alle DMS-Endpunkte. ## Änderung - 5xx: Antwort `Interner Fehler` plus `correlation_id`; Originaltext nur im Server-Log mit derselben ID - 4xx unverändert (fachlicher Text bleibt) - Test `5xx` angepasst, neue Tests: kein Interna-Leck im 5xx-Body, `correlation_id` nur bei 5xx Nicht Teil dieses PRs: `httpharden.ListenAndServe` in `dms` wickelt `Normalize` nicht selbst ein (Root/Archive tun es). Für die App unkritisch (Wrapping über `apiwiring`), betrifft nur den Metrics-Listener des Workers. ## Verifikation (Host 131) `go vet ./...` und `gofmt` sauber, `go test ./...` in `dms` ohne DSN ohne Fehlschlag. Tests, die ein 5xx-Body-Format erwarten und eine DB brauchen, wurden übersprungen; Lauf mit Test-DB steht aus. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick added 1 commit 2026-10-27 13:39:40 +01:00
fix(dms): apierror.Normalize verbirgt 5xx-Texte (QA-15 F-14)
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
87f3cda5ad
dms/internal/apierror gab bei Status >= 500 den vom Handler geschriebenen
Text unveraendert an den Aufrufer (z. B. DB-/Pfadfehler). Angleichung an
internal/apierror: 5xx liefert "Interner Fehler" mit correlation_id, der
Originaltext geht nur ins Server-Log. 4xx unveraendert.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Owner

Ersetzt durch #384: dms nutzt common/apierror (enthaelt dieselbe 5xx-Behebung samt Tests).

Ersetzt durch #384: dms nutzt common/apierror (enthaelt dieselbe 5xx-Behebung samt Tests).
patrick closed this pull request 2026-10-27 23:24:08 +01:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: scripte/nexarch#375