fix(docs): protect the generate-page endpoint from anonymous abuse - #379
Open
atinux wants to merge 1 commit into
Open
fix(docs): protect the generate-page endpoint from anonymous abuse#379atinux wants to merge 1 commit into
atinux wants to merge 1 commit into
Conversation
The playground endpoint passed any anonymous POST straight to the AI Gateway (claude-sonnet, up to 8 tool steps) with no authentication, rate limit, or server-side length cap — a free LLM proxy billed to the project. - Require a matching Origin header (the playground is browser-only) - Limit each IP to 5 requests per minute (in-memory sliding window) - Validate the body with zod: prompt capped at 1000 chars (matching the client widget), mode restricted to its two values
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
comark
@comark/angular
@comark/ansi
@comark/html
@comark/nuxt
@comark/react
@comark/svelte
@comark/vue
commit: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a same-origin check, a per-IP rate limit (5/min, in-memory sliding window), and server-side body validation (zod: prompt ≤ 1000 chars,
modeenum) to/api/generate-page.Why
A security scan found the endpoint was an unauthenticated proxy to the project's AI Gateway: any internet client could run arbitrary prompts through
claude-sonnet-4.6with up to 8 tool steps, billed to the project, with no quota or length bound (the 1000-char cap was client-side only). The origin check fits because the only caller is the browser playground; the rate limiter is per serverless instance, which is a floor worth having even without shared storage.🤖 Prepared by an AI agent (OpenCode) from a security-audit findings list; commits are signed by the repository owner's key.