Skip to content

Audit hardening: rate-limiter bound, logout cookie path, Cloudflare Tunnel docs#40

Merged
StrandedTurtle merged 1 commit into
mainfrom
audit-hardening
Jul 1, 2026
Merged

Audit hardening: rate-limiter bound, logout cookie path, Cloudflare Tunnel docs#40
StrandedTurtle merged 1 commit into
mainfrom
audit-hardening

Conversation

@StrandedTurtle

Copy link
Copy Markdown
Owner

Follow-ups from a v1 security + project-setup audit.

App fixes

  • Bound the login rate-limiter map — expired per-IP entries are swept once the map passes 10k IPs, so a wide scan from many addresses can't grow it without limit.
  • Logout cookie path — the session cookie is now cleared with the same path it was set with, so logout works on BASE_PATH (subpath) deployments.
  • urlguard.js header comment — corrected to reflect the actual policy (LAN notification targets allowed, admin-only, per SECURITY.md); the strict SSRF guards remain available but unused.

Docs

  • README + SECURITY.md: Cloudflare Tunnel guidance — require Cloudflare Access in front, set TRUST_PROXY=1 and an https BASE_URL.
  • README typo fix.

All 111 server tests pass; client builds clean.

🤖 Generated with Claude Code

…el setup

- Bound the in-memory login-attempt map (sweep expired entries past 10k IPs)
  so a wide scan can't grow it forever now that internet exposure via a
  tunnel is a documented deployment.
- Clear the session cookie with the same path it was set with, so logout
  works when the app is served under BASE_PATH.
- Fix the stale urlguard.js header: the strict SSRF guards are kept but
  unused; the active policy (LAN targets allowed, admin-only) matches
  SECURITY.md.
- README/SECURITY.md: Cloudflare Tunnel guidance (Cloudflare Access in
  front, TRUST_PROXY=1, https BASE_URL) and a README typo fix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@StrandedTurtle StrandedTurtle merged commit f21d843 into main Jul 1, 2026
3 checks passed
@StrandedTurtle StrandedTurtle deleted the audit-hardening branch July 1, 2026 22:03
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