c93d4375ab
Manche Mail-Clients setzen für PDF-Anhänge fälschlich Content-Type: application/octet-stream (oder application/x-pdf, "PDF Document" usw.). Der bisherige Whitelist-Check fiel dann auf Content-Disposition: attachment zurück – der Browser hat trotz target="_blank" am <a>-Tag KEINEN neuen Tab geöffnet, sondern die Datei direkt im aktuellen Tab "geöffnet" (Download oder native PDF-Anzeige), je nach Browser-Konfiguration. Effekt für den User: Klick auf Vorschau-Icon → Vorschau ersetzt das CRM-UI. Fix: Magic-Byte-Detection direkt am Buffer (gleiche Logik wie beim /api/files/download-Endpoint). PDF/PNG/JPEG/GIF/WebP werden zuverlässig erkannt, der vom IMAP gemeldete Type wird ignoriert (real-world unzuverlässig). Bei Match → inline mit erkanntem Type; sonst attachment + octet-stream. text/plain bleibt durch einen schwächeren Sniff-Check zugelassen, sofern keine HTML- Tags am Anfang stehen. Stored-XSS-Schutz unverändert: HTML-Anhang mit .pdf-Endung → kein PDF-Magic → kein inline → attachment + octet-stream → kein Browser-Rendern. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>