Custom web app security audit
If your site or app wasn't built on WordPress, Shopify, or any other off-the-shelf platform, there's no plugin database, no theme scanner, and no vulnerability feed to check it against — every piece of its logic is one-off and has to be tested by hand.
What makes a custom-built app a different audit surface
There’s no plugin database to check against
On WordPress, a scanner can fingerprint every installed plugin and theme and cross-reference version numbers against a public vulnerability database. On Shopify, the app ecosystem and platform-level protections are largely fixed and well understood. A custom-built app has none of that surface. The login form, the password reset flow, the way sessions are issued, the admin panel, the endpoints your frontend calls — all of it was written once, specifically for this app. None of it exists anywhere else in exactly this form, so no vulnerability database has an entry for it.
Everything bespoke is a testing surface: auth, sessions, uploads, admin panels, integrations
When every meaningful piece of logic is custom, every meaningful piece of logic is also unverified until someone actually tries to break it — how login attempts are rate-limited (or aren’t), whether a session token can be reused after logout, whether the password reset endpoint reveals which emails have accounts, whether file uploads are checked for type and size on the server or just in the browser, and whether the custom admin panel enforces access control on the backend or just hides menu items in the UI.
It also includes every third-party integration someone hand-wired in — a payment processor, a CRM, an email service, a webhook receiver. Each one was built under a deadline by someone making judgment calls about how much validation to add, and those judgment calls are exactly what only surfaces when someone tries to abuse the integration directly.
Why manual testing matters more here, not less
No one is disclosing vulnerabilities in your one-off code
WordPress plugins get found and reported constantly, precisely because tens of thousands of sites run the same plugin. That entire mechanism depends on many sites sharing the same code. Your custom app doesn’t have that safety net — the absence of a public report about your app’s security doesn’t mean it’s clean, it means nobody outside your team has looked.
Automated scanners are built for known patterns; custom logic bugs aren’t a pattern
The bugs that actually breach custom apps are usually logic flaws: changing an order ID in a URL and pulling up someone else’s invoice, hitting an internal-only API endpoint directly, or exploiting a race condition in a custom checkout flow. Finding those requires someone to actually think like an attacker about your specific app — which is what a manual audit does and an automated scan structurally cannot.
What a custom web app security audit actually covers
A Bug Circuit audit of a custom-built app works through the app’s actual functionality rather than checking it against a list of known issues:
- Authentication and session handling — password reset token generation and expiry, account enumeration, session fixation, MFA implementation, hand-rolled JWT behavior under manipulation.
- Authorization and business logic — whether one account can reach another’s data by changing an identifier (IDOR), privilege escalation between roles, and whether the admin panel’s access control is enforced server-side.
- File uploads and hand-built integrations — server-side validation of file type/size, whether uploads can write outside their intended storage location, and how each integration handles malformed input.
Who this is for, and how to get one scoped right
Agencies, freelance builds, and in-house products
This applies whether your app was built by an agency that’s since moved on, a freelance developer working solo, or a team you employ directly with no particular framework standardized across the company. If the app is a startup’s actual product — the thing you’re selling or fielding security questionnaires about — security audit for startups covers that business context; this page covers what makes the codebase itself a different kind of test.
Scoping and cost
Cost tracks surface area, not lines of code: the number of distinct auth flows, user roles, upload points, and third-party integrations drives how long a proper manual audit takes. See how much a penetration test costs for the full breakdown. Every engagement starts the same way regardless of tier: verifying you own the domain and signing a recorded Authorization to Test.
Common questions
How much does a custom web app security audit cost?
Are there good custom web app security audit checklists on GitHub I can use myself?
People on Reddit say running an automated scanner is enough for a small custom app — is that true?
How is a custom web app audit different from a WordPress or Shopify security audit?
Does this apply if the custom app is a startup’s core product?
What’s the difference between an automated scan and a manual audit for a custom app?
What do we actually get at the end of a custom web app security audit?
Do you need our source code to audit a custom-built app?
Keep reading
Your app is custom-built. Its security audit should be too.
Get a manual audit built around your app’s actual code, not a plugin scan that has nothing to scan.