diff --git a/web/src/pages/Transfer.jsx b/web/src/pages/Transfer.jsx index 42e5661..a63c2f5 100644 --- a/web/src/pages/Transfer.jsx +++ b/web/src/pages/Transfer.jsx @@ -11,7 +11,11 @@ function buildLabelCsv(rows, origin, delim = ",") { const delimRe = delim === "\t" ? "\\t" : delim; const needsQuote = new RegExp(`[${delimRe}"\\n\\r]`); const esc = (v) => { - const s = String(v ?? ""); + let s = String(v ?? ""); + // Formel-Injektion verhindern: Beginnt eine Zelle mit = + - @ (oder Tab/CR), + // koennte Excel/P-touch sie als Formel ausfuehren. Ein vorangestelltes + // Apostroph macht sie zu reinem Text. + if (/^[=+\-@\t\r]/.test(s)) s = `'${s}`; return needsQuote.test(s) ? `"${s.replace(/"/g, '""')}"` : s; }; const lines = [head.map(esc).join(delim)];