Marc-André Bombeck
4543fa7192
Let the app CSP frame and render its own blob previews
...
Since the record fence, vault previews load through object URLs: the
detail sheet frames a decrypted PDF from a blob: URL and thumbnails
render from blob: images. The app CSP carried no frame-src, so the PDF
iframe fell through to default-src 'self' and was blocked outright,
while img-src 'self' data: silently degraded every thumbnail to its
fallback icon.
Add frame-src 'self' blob: and extend img-src with blob: in both the
dev and prod policies. This admits exactly the app's own documents: a
blob: URL is mintable only by same-origin script, script execution
stays nonce-bound in production, and object-src 'none', frame-ancestors
'none' and default-src 'self' are untouched. The vault serve route
keeps its stricter document CSP. A unit test pins the directives so a
future CSP edit cannot silently regress the previews.
Refs #787
2026-08-13 12:08:59 +02:00
..
2026-07-28 21:10:15 +02:00
2026-08-08 01:05:31 +02:00
2026-08-07 23:20:39 +02:00
2026-08-06 18:54:20 +02:00
2026-08-08 01:05:31 +02:00
2026-08-02 16:21:19 +02:00
2026-07-26 22:27:48 +02:00
2026-08-06 14:05:59 +02:00
2026-08-03 10:18:27 +02:00
2026-08-13 06:16:45 +02:00
2026-08-08 11:43:58 +02:00
2026-08-04 14:55:32 +02:00
2026-08-01 10:45:24 +02:00
2026-08-02 16:21:19 +02:00
2026-08-13 09:14:55 +02:00
2026-08-08 01:05:31 +02:00
2026-07-28 21:05:42 +02:00
2026-08-13 06:16:45 +02:00
2026-08-05 23:03:17 +02:00
2026-08-10 05:32:59 +02:00
2026-08-02 16:21:19 +02:00
2026-07-26 22:04:58 +02:00
2026-08-02 16:21:19 +02:00
2026-08-02 16:49:47 +02:00
2026-08-08 13:35:03 +02:00
2026-08-02 16:21:19 +02:00
2026-08-06 05:44:41 +02:00
2026-08-06 05:23:38 +02:00
2026-08-02 16:21:19 +02:00
2026-08-02 16:21:19 +02:00
2026-08-08 21:24:00 +02:00
2026-07-25 16:23:58 +02:00
2026-08-08 01:24:04 +02:00
2026-07-28 12:03:02 +02:00
2026-08-04 14:55:32 +02:00
2026-07-28 21:05:42 +02:00
2026-08-02 16:21:19 +02:00
2026-08-07 02:26:29 +02:00
2026-08-07 05:43:06 +02:00
2026-08-07 01:00:02 +02:00
2026-07-28 21:11:43 +02:00
2026-08-07 22:19:43 +02:00
2026-08-02 16:21:19 +02:00
2026-08-02 16:21:19 +02:00
2026-08-08 07:14:04 +02:00
2026-08-08 15:30:38 +02:00
2026-07-25 11:36:18 +02:00
2026-07-31 11:08:06 +02:00
2026-07-31 09:07:50 +02:00
2026-08-06 13:46:42 +02:00
2026-08-07 08:10:48 +02:00
2026-08-07 05:43:06 +02:00
2026-08-04 14:55:32 +02:00
2026-07-26 14:37:57 +02:00
2026-08-13 12:08:59 +02:00
2026-06-10 11:00:26 +02:00
2026-06-19 22:20:31 +02:00
2026-07-07 18:43:13 +02:00
2026-07-19 13:40:03 +02:00
2026-06-14 19:34:14 +02:00
2026-07-20 00:40:20 +02:00
2026-07-19 10:59:40 +02:00
2026-05-15 07:35:05 +02:00
2026-05-16 19:46:43 +02:00
2026-07-21 00:05:03 +02:00
2026-08-07 02:26:29 +02:00
2026-08-06 23:04:29 +02:00
2026-08-06 23:04:29 +02:00
2026-08-06 19:10:02 +02:00
2026-08-06 20:48:50 +02:00
2026-08-06 03:40:13 +02:00
2026-08-07 01:00:02 +02:00
2026-08-06 03:40:13 +02:00
2026-08-06 03:40:13 +02:00
2026-08-02 16:21:19 +02:00
2026-07-30 11:55:16 +02:00
2026-07-29 13:37:20 +02:00
2026-08-03 13:49:19 +02:00
2026-08-08 20:24:42 +02:00
2026-08-07 06:11:36 +02:00
2026-08-07 00:52:25 +02:00
2026-08-07 06:11:36 +02:00
2026-08-07 05:11:02 +02:00
2026-08-07 05:11:02 +02:00
2026-08-08 21:20:57 +02:00
2026-08-05 23:58:18 +02:00
2026-08-08 21:43:28 +02:00
2026-08-02 16:21:19 +02:00
2026-08-13 06:16:45 +02:00
2026-07-29 13:37:20 +02:00
2026-07-27 16:10:30 +02:00
2026-08-02 16:21:19 +02:00
2026-08-08 21:43:28 +02:00
2026-07-30 23:20:02 +02:00
2026-08-02 16:21:19 +02:00
2026-08-02 16:21:19 +02:00
2026-08-02 16:21:19 +02:00
2026-08-07 21:40:41 +02:00