Pentest R101.1: Inline-Preview-Pfad refaktoriert + Diagnose-Log
R101.1 INFO/funktional: Pentester sieht Content-Disposition: attachment auch bei ?disposition=inline. Die Logik im Controller ist korrekt und liefert beim Direkttest gegen echte PDFs application/pdf, der Pfad lässt sich aber in Prod nicht reproduzieren. Refaktoriert: - Magic-Byte-Check in detectSafeContentType() extrahiert - File-Descriptor wird in finally garantiert geschlossen - Short-Read-Fälle (bytesRead < n) explizit geguardet - console.warn wenn inline angefragt aber Magic-Byte-Mismatch oder Read-Crash – damit der Fall in Prod-Logs sichtbar wird falls er wieder auftritt Sicherheits-Verhalten unverändert: Mismatch → attachment (Stored-XSS-Schutz aus R30.13). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,24 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔧 Pentest R101.1 – Inline-Preview-Pfad refaktoriert + Diagnose-Log**
|
||||
- Pentester R101.1 (INFO/funktional) berichtet: `?disposition=inline`
|
||||
bewirkt nichts, Browser zeigt Download-Dialog. Die Logik im
|
||||
`fileDownload.controller` ist eigentlich korrekt – sauberer Magic-
|
||||
Byte-Check für PDF/PNG/JPEG/GIF/WebP – und liefert beim Direkttest
|
||||
gegen echte Vertrags-PDFs `application/pdf`. Wir können das in Prod
|
||||
aber nicht reproduzieren.
|
||||
- Refaktorierung: Magic-Byte-Check in `detectSafeContentType()`
|
||||
extrahiert, finally-Block schließt File-Descriptor garantiert,
|
||||
Short-Read-Fälle (`bytesRead < n`) jetzt sauber geguardet.
|
||||
- Sicherheits-Verhalten unverändert: bei Magic-Byte-Mismatch bleibt
|
||||
es bei `Content-Disposition: attachment` (Stored-XSS-Schutz aus
|
||||
R30.13).
|
||||
- Neu: `console.warn`, wenn `inline` angefragt wurde, aber der
|
||||
Magic-Byte-Check fehlschlägt oder der Read crasht. Damit fällt
|
||||
der Fall im Prod-Log auf, falls er nochmal auftritt – bisher
|
||||
war's silent.
|
||||
|
||||
- [x] **🔒 Pentest R97 – Attachment-Validierung im Send-Handler**
|
||||
- R97.1 (LOW): malformed `content` (`null`, fehlend, `true`, `""`)
|
||||
erzeugte 200/500 mit rohem `Buffer.from()`-Fehlertext in der
|
||||
|
||||
Reference in New Issue
Block a user