Block a user
fix #84: security headers were silently dropped (set pre-handler)
[pentest2] Unbounded title/language fields accepted and stored (50 KB title, arbitrary language strings)
[pentest2] public:false is ignored — pastes silently become fully public and listed in the public feed
[pentest2] Missing security headers on HTML pages (no CSP, no X-Frame-Options, no X-Content-Type-Options, no Referrer-Policy)
[pentest2] Create rate limit is keyed on spoofable X-Forwarded-For
[pentest2] Password-protected pastes: unauthenticated password guessing via GET query params bypasses rate limiting
[pentest2] burn_after_reads is never enforced: paste content remains readable indefinitely
[pentest] Missing security headers and no HSTS; HTTP->HTTPS redirect reflects arbitrary Host header
Fully remediated and live-verified 2026-09-09:
- App security headers: merged via PR #76 (CSP, Referrer-Policy, nosniff on all HTML)
- HSTS: Traefik entrypoint middleware `kube-system-hsts@kuberne…
[pentest] Missing security headers and no HSTS; HTTP->HTTPS redirect reflects arbitrary Host header
Blind pentest round 2 against v0.2.1 on k3s
Blind pentest against dev build on k3s
Round 1 complete. All findings fixed and merged into v0.2.1 (deployed to prod + dev on k3s): #63 critical delete auth (live-verified 403 on dev), #58/#62 burn race, #65 listing leak, #66 admin…
Blind pentest against dev build on k3s
FUTURE: optional end-to-end encryption for pastes/files
Design phase complete: #75 merged (docs/design/). Implementation remains open.
FUTURE: file/image attachments storage backend (S3?)
Design phase complete: #69 merged (docs/design/). Implementation remains open.
FUTURE: storage backend choice (SQLite/Postgres/Redis)
Design phase complete: #69 merged (docs/design/). Implementation remains open.
[pentest] Password-protected and unlisted pastes are exposed in public listings /api/public
Landed via PR #71/#fix landed (merged to main).
[pentest] Password-protected and unlisted pastes are exposed in public listings /api/public
Exclude password-protected pastes from public listings (#65)
Fix content (f6c4342: password_hash IS NULL filter on ListPublic + regression test) is verified present on main. Merging the PR via the API kept returning "Please try again later" (server-side…
Exclude password-protected pastes from public listings (#65)