fix(proxy): reject malformed server-action requests to reduce CPU spikes
CI / check (push) Successful in 29s
CI / tests-unit (push) Successful in 1m55s
CI / tests-integration (push) Successful in 1m59s
CI / tests-quality (push) Successful in 50s
CI / tests-imaging-browsers (push) Successful in 3m42s
CI / tests-ui (push) Successful in 4m49s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 4m12s

This commit is contained in:
openhands committed 2026-10-22 21:46:55 +02:00
1 parent 1ad4f9ea28
commit a878d831aa
1 file changed
+8
+8
View File
@@ -19,6 +19,14 @@ const SECURITY_HEADERS: Record<string, string> = {
}; };
export const proxy = async (req: import("next/server").NextRequest) => { export const proxy = async (req: import("next/server").NextRequest) => {
// Server actions carry an opaque action id in this header. A malformed or
// trivially short id (e.g. "x" sent by bots) can never resolve to a real
// action; rejecting it here avoids the expensive lookup/render path.
const nextAction = req.headers.get("next-action");
if (nextAction && !/^[A-Za-z0-9_-]{8,}$/.test(nextAction)) {
return new NextResponse(null, { status: 400 });
}
const decision = await enforceDdosRateLimit(req); const decision = await enforceDdosRateLimit(req);
if (decision.outcome === "suspect") { if (decision.outcome === "suspect") {
return ddosReject(403); return ddosReject(403);