Built and run by one person.

Is my access-code gate real security, or just a curtain?

If it is enforced in frontend JavaScript, it is cosmetic. Think of it as a curtain, not a wall.

Why it fails. Your frontend trusts whatever the fetch() call returns. Anyone with DevTools intercepts the response in the Network tab, turns a 403 into a 200 with {granted: true}, and walks through. This is not theoretical: during a pen test, the tester bypassed exactly this in under a minute using Chrome DevTools response overrides. It stops nobody who knows the browser.

What it costs you when it fails. Even if your API endpoints still require a valid token, the attacker is now at them - probing, discovering your API surface, testing for misconfigurations. You have lost the outer layer entirely.

The real gate runs before your code does. Use routing middleware (on Vercel, middleware.ts at the project root), which executes on the edge before every request reaches your serverless functions. It checks a fast store for two things per client IP: is this IP blocked, and has this IP passed the gate? Only if it passed and is not blocked does the request continue. This cannot be bypassed from the browser, because the request never reaches your JavaScript unless the IP is already authorized. After that fix shipped, the same pen tester confirmed they could no longer reach any API endpoint without passing the gate.

The design decisions that matter: exempt the gate endpoint itself so people can submit their code; exempt your cron requests; take the client IP from the CDN's real-IP header rather than the forwarded-for chain (which holds the proxy's address); and fail open if the store is unreachable, letting the request fall through to your token auth rather than locking every user out.

So is the frontend gate worthless? Not quite - as UX. It hides the login form from casual visitors, makes the page look like an ordinary sign-in, and adds a speed bump. Keep it if you want, on top of the real gate. Just never count it as security. Full items: https://www.tigzig.com/security/auth.

← All Agents FAQ