diff --git a/backend/src/__tests__/drawings.integration.ts b/backend/src/__tests__/drawings.integration.ts index a09deb59..6356e2eb 100644 --- a/backend/src/__tests__/drawings.integration.ts +++ b/backend/src/__tests__/drawings.integration.ts @@ -117,6 +117,33 @@ describe("Security Sanitization - Image Data URLs", () => { expect(resultDataUrl.length).toBe(originalDataUrl.length); }); + it("should preserve svg image data URLs", () => { + const svgDataUrl = + "data:image/svg+xml;utf8," + + encodeURIComponent( + "" + ); + const files = { + "file-1": { + id: "file-1", + mimeType: "image/svg+xml", + dataURL: svgDataUrl, + created: Date.now(), + }, + }; + + const result = sanitizeDrawingData({ + elements: [], + appState: { viewBackgroundColor: "#ffffff" }, + files, + }); + + const resultFiles = result.files as Record; + const resultDataUrl = resultFiles["file-1"].dataURL; + + expect(resultDataUrl).toBe(svgDataUrl); + }); + it("should preserve large image data URLs (>10000 chars) - REGRESSION TEST for issue #17", () => { const files = createSampleFilesObject(1, "large"); const originalDataUrl = Object.values(files)[0].dataURL; diff --git a/backend/src/security.ts b/backend/src/security.ts index b4c19299..17c050fd 100644 --- a/backend/src/security.ts +++ b/backend/src/security.ts @@ -475,6 +475,7 @@ export const sanitizeDrawingData = (data: { "data:image/jpg", "data:image/gif", "data:image/webp", + "data:image/svg+xml", ]; const dangerousProtocols = [