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 = [