Skip to content

security: restrict CORS to explicit allowed origins#706

Merged
lane711 merged 3 commits intomainfrom
merge-pr-661-cors
Mar 27, 2026
Merged

security: restrict CORS to explicit allowed origins#706
lane711 merged 3 commits intomainfrom
merge-pr-661-cors

Conversation

@lane711
Copy link
Copy Markdown
Collaborator

@lane711 lane711 commented Mar 27, 2026

Summary

Cherry-picked from #661 by @mmcintosh

Restricts CORS to explicitly configured origins instead of wildcard, preventing unauthorized cross-origin API access.


Attribution

Closes #661

🤖 Generated with Claude Code

- Replace wildcard origin:'*' with dynamic CORS_ORIGINS check
- No CORS_ORIGINS env var = reject all cross-origin requests (secure default)
- Add CORS_ORIGINS to Bindings interface
- Add X-API-Key to allowed headers
- Add CORS_ORIGINS=http://localhost:8787 to dev wrangler.toml configs
- Same-origin requests (admin UI) are unaffected

Breaking: cross-origin API consumers must be listed in CORS_ORIGINS

Fixes VULN-003
Tests were sending Origin headers (localhost:3000, example.com) that
don't match the CORS_ORIGINS allowlist. Updated to use http://localhost:8787
and assert the echoed origin instead of wildcard '*'.
@lane711 lane711 merged commit 1da33a7 into main Mar 27, 2026
2 checks passed
lane711 added a commit that referenced this pull request Mar 30, 2026
Security hardening release:
- SQL injection fix via sort order validation (#713)
- Reflected XSS fix on auth pages (#714)
- Stored XSS fix in content preview (#715)
- Security headers middleware (#708)
- Auth endpoint rate limiting (#707)
- CORS restrictions (#706)
- PBKDF2 password hashing (#705)
- JWT secret to environment variable (#704)

Bug fixes:
- Radio field support (#723)
- Confirm dialogs for repeater/block deletes (#722)
- Rich text editor field types (#721)
- user_profiles migration in core (#718)
- itemTitle for structured arrays (#725)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.

2 participants