Files
pangolin/server/private/routers
Dhananjay Maurya bae174766b Neutralise formula prefixes in CSV log exports
generateCSV escaped quotes only when a value happened to contain a comma and never neutralised formula prefixes, so every CSV log export could emit attacker controlled cells that execute when an admin opens the file. actor is a virtual API key name validated as nothing more than a non-empty string, and path, host, originalRequestURL, metadata and the AI session bodies come straight from the client request.

Each value now goes through a single encoder that collapses CR, LF and CRLF to a literal \n so a record can never be split across rows, prefixes a leading apostrophe when the first character would make a spreadsheet evaluate the cell as a formula, and quotes whenever the field contains a comma or a quote instead of only when it contains a comma. Headers use the same encoder so a column name cannot desynchronise the rows from the header row.

The five CSV export endpoints also declare charset=utf-8, matching the content type already used by the log streaming destination.

Fixes #3864
2026-10-08 14:43:43 +05:30
..
2026-09-14 16:48:09 -04:00
2026-06-09 14:09:36 -07:00
2026-09-14 16:48:10 -04:00
2026-07-22 21:06:40 +01:00
2026-04-15 14:41:13 -07:00
2026-08-17 12:00:12 -04:00
2026-04-15 14:41:13 -07:00
2026-08-21 13:41:45 -04:00
2026-09-14 16:48:09 -04:00
2026-04-15 14:41:13 -07:00
2026-06-29 14:59:05 -04:00
2026-08-19 17:25:32 -04:00
2026-09-14 16:48:07 -04:00
2026-08-19 17:25:32 -04:00