Skip to content

raw, download: do not burn a paste on a plain GET - #233

Open
cgzones wants to merge 1 commit into
matze:masterfrom
cgzones:burn-raw-download
Open

cgzones wants to merge 1 commit into
matze:masterfrom
cgzones:burn-raw-download

Conversation

@cgzones

@cgzones cgzones commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

/raw and /dl destroyed a burn-after-reading paste on a plain GET, so anything that follows a URL consumed it: a link unfurler, a prefetch, or an <img> on any page. Since /md runs a CSP that permits images, a paste holding ![](/raw/OTHER_ID) made every viewer's browser destroy someone else's paste.

Both routes return bytes to a GET with nowhere to confirm, so they refuse a burn paste with 403 instead of consuming it; the content stays reachable through the paste page, which asks first.

`/raw` and `/dl` destroyed a burn-after-reading paste on a plain GET, so
anything that follows a URL consumed it: a link unfurler, a prefetch, or an
`<img>` on any page. Since `/md` runs a CSP that permits images, a paste
holding `![](/raw/OTHER_ID)` made every viewer's browser destroy someone
else's paste.

Both routes return bytes to a GET with nowhere to confirm, so they refuse a
burn paste with 403 instead of consuming it; the content stays reachable
through the paste page, which asks first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant