Composer-Sicherheitsupdates, dompdf 3, email-Regel ohne Zeilenumbrueche

- Patch-/Minor-Updates (guzzle, commonmark, flysystem, excel,
  phpspreadsheet, phpseclib, laravel/framework 11.x)
- barryvdh/laravel-dompdf 3.1 (dompdf 3.1.6), Test fuer den PDF-Weg
  inkl. eingebettetem PHP und Briefpapier
- Rueckport des Laravel-12.60-Fixes gegen CRLF in der email-Regel
- Protokoll: Ergebnis composer audit, offene Punkte Laravel 12 und
  PDF-Seitenzahlen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-08 12:50:31 +00:00
parent 47a46b1401
commit 4274bff9e2
7 changed files with 669 additions and 491 deletions

View file

@ -26,6 +26,7 @@
| `v1.2.1` | bereinigte Git-Historie (alle Hashes neu), IDE-Helper-Dateien nicht mehr versioniert |
| `v1.2.2` | `deploy.sh` nur bei `APP_ENV=production`, `dev/app-bak` entfernt |
| `v1.3.0` | GlitchTip (Server, Fehlersignale, Browser), `sentry/sentry-laravel`; Tests ohne lokalen Datei-Cache |
| `v1.4.0` | Composer-Sicherheitsupdates, dompdf 3, `email`-Regel lehnt Zeilenumbrüche ab |
Alle Tags vor dem 08.10. wurden beim Bereinigen der Historie neu erzeugt; Commit-Hashes in älteren
Notizen unter `dev/` gehören zur alten Historie.
@ -76,8 +77,32 @@ sind die alten Objekte (`.env`, Schlüssel, 10-GB-Datei) auch auf den Git-Server
`emails/exception.blade.php` prüfen, ob sonst noch genutzt. Betriebs-Alarme (`OperationalAlert`) bleiben.
- **Datenschutzerklärung**: Fehlerprotokollierung aufnehmen (User-ID, URL, Browser, Fehlermeldung;
eigener Server; Frist = Aufbewahrung in GlitchTip; berechtigtes Interesse) — neue Erklärung ist in Arbeit.
- **Composer-Sicherheitshinweise**: `composer audit` meldet 34 Hinweise in 8 Paketen (bestanden schon
vor der Umstellung) — eigenes Paket.
- **Laravel 12**: `composer audit` meldet noch 3 Hinweise zu `laravel/framework` — Fixes gibt es nur in
12.x/13.x, Laravel 11 bekommt keine Sicherheitsupdates mehr. Stand 08.10.:
- CRLF in der `email`-Regel (hoch): Fix aus 12.60 rückportiert (`App\Support\Validation\Validator`,
registriert in `AppServiceProvider`, Test `EmailRuleLineBreakTest`) — nach dem Update entfernen.
- Temporäre signierte URLs (mittel): betrifft nur `Storage::temporaryUrl()` auf dem lokalen Disk — im
Code nicht genutzt.
- XSS auf der Debug-Seite (niedrig): nur mit `APP_DEBUG=true`, auf Live aus.
Das Update auf Laravel 12 ist ein eigenes Paket.
- **PDF-Seitenzahlen** (Befund beim dompdf-Update, schon vorher so): In `pdf/invoice`, `delivery`,
`credit` und `cancellation` steht das `page_script` am Anfang des `<body>` und wirkt deshalb nur auf
Seite 1 — „Seite x/y“ erscheint auf mehrseitigen Rechnungen nie. In `credit_details*` steht es am
Ende und funktioniert. Außerdem fehlt die Übersetzung `pdf.delivery_note_no` (Lieferschein zeigt den
Schlüssel).
### Composer-Sicherheitshinweise (08.10.2026)
`composer audit`: 34 Hinweise in 8 Paketen → 3 in `laravel/framework` (siehe oben).
- Patch-/Minor-Updates: `guzzlehttp/guzzle` 7.15, `league/commonmark` 2.10, `league/flysystem` 3.36,
`maatwebsite/excel` 3.1.70, `phpoffice/phpspreadsheet` 1.30.7, `phpseclib/phpseclib` 3.0.57,
`laravel/framework` (11.x) und Abhängigkeiten.
- `barryvdh/laravel-dompdf` 2.2 → 3.1 (dompdf 2.0 → 3.1). Rechnung, Lieferschein und Gutschrift-Details
vorher/nachher verglichen: identisch. `enable_remote` ist jetzt standardmäßig aus — die PDF-Vorlagen
laden Schriften lokal aus `public/fonts`, Bilder per URL gibt es nicht. Test: `tests/Feature/Pdf`.
- Testsuite vorher und nachher: dieselben 88 vorbestehenden Fehlschläge, keine neuen.
- **Passport-Schlüssel** (`storage/oauth-*.key`) standen bis 08.10. in der Git-Historie. Falls sie nicht
mit den Zugangsdaten getauscht wurden: `php artisan passport:keys --force` — alle API-Tokens werden ungültig.