diff --git a/backend/src/routes/contract.routes.ts b/backend/src/routes/contract.routes.ts index c6c3b5a7..1725e374 100644 --- a/backend/src/routes/contract.routes.ts +++ b/backend/src/routes/contract.routes.ts @@ -29,7 +29,7 @@ const docUpload = multer({ // Magic-Byte-Check in validateUploadedFile. const allowed = ['application/pdf', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp']; if (allowed.includes(file.mimetype)) cb(null, true); - else cb(new Error('Nur PDF, JPG, PNG, GIF oder WebP erlaubt')); + else cb(new Error('Nur PDF, JPG, PNG, GIF oder WebP-Dateien sind erlaubt')); }, limits: { fileSize: 10 * 1024 * 1024 }, }); diff --git a/docs/todo.md b/docs/todo.md index 151d8cbe..179fd564 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -97,6 +97,17 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung ## ✅ Erledigt +- [x] **🔒 Pentest 70.2 (LOW): falscher 500 statt 415 bei verbotenem MIME-Type** + - Globaler Error-Handler in `index.ts:461` matcht + `/sind erlaubt|nicht erlaubt/i` und mappt auf 415. Meine 70.1- + Message „… WebP erlaubt" (ohne „sind") rutschte durch und landete + bei 500 + Error-Log-Spam. + - Fix: 1 Zeile in `contract.routes.ts` – `… WebP-Dateien sind + erlaubt` macht den Regex glücklich. Andere Routes + (`upload.routes.ts`, `gdpr.routes.ts`, `pdfTemplate.routes.ts`, + `factoryDefaults.routes.ts`, `appSetting.routes.ts`) nutzen alle + schon „sind erlaubt". + - [x] **🔒 Pentest 70.1 (INFO): GIF/WebP-Inkonsistenz in contract.routes Multer-Filter** - `contract.routes.ts` Vertragsdokumente: Multer-fileFilter blockte `image/gif` und `image/webp`, obwohl `validateUploadedFile` beide