Security testing
How to check if your web app is secure
A method for assessing your own app, not a list to tick off. Two passes — what the internet can see from outside, and what your app actually allows once someone is logged in.
Short answer
You find out by testing the app, in two passes. First, run an external scan of the live URL — that tells you what the internet can reach without logging in. Second, test it yourself as a real user: sign in as two separate accounts, change IDs in requests, and try admin actions from an ordinary account. The scan reports exposure; only the manual pass shows whether your app actually enforces the rules it appears to. This is deliberately different from working through a list of areas — if you want that, the area-by-area security checklist covers what to review; this page covers how to find out.
Key takeaways
- Start with a scan of the live URL to catch public exposure, then manually test auth, data access, and privileged workflows.
- Testing beats reading: a second test account and a modified request tell you more than any amount of code review.
- The UI looking correct is not proof. Test requests and database rules, especially for multi-user apps.
- Missing headers and hardening issues matter, but leaked secrets and broken authorization usually matter first.
- Rescan after fixes and keep checking after major deploys.
Step 1: Scan the live public app
Start with the surface anyone on the internet can see. A scan should check for the common mistakes that are easy to ship by accident and easy for an attacker to find.
No private secrets are visible in the frontend bundle.
No .env, .git, config, source map, or backup files are publicly reachable.
HTTPS works with a valid certificate and sane redirects.
Security headers are present or intentionally configured.
Robots.txt and sitemap.xml do not expose private app surfaces.
Admin, debug, staging, and internal routes are not publicly open.
You can run this first pass with a free website security scan.
Step 2: Test auth and data access manually
Security bugs often hide behind a working UI. The page might hide a button, but the API or database may still allow the action.
Create two test users and confirm each can only see their own data.
Change ids in URLs or requests and confirm cross-user access is blocked.
Try admin-only actions as a normal user and confirm the server rejects them.
Test logout, password reset, expired sessions, and invite flows.
Review database policies for every table that holds user or customer data.
If you use Supabase, make the Supabase RLS checklist part of this step. For login and session behavior, use the authentication security checklist.
Step 3: Interpret what the two passes found
A finding is only useful once you know how much it matters. Sort what you found by what an outsider could actually do with it, not by how alarming the label sounds.
Serious findings
Exposed private keys, public sensitive files, open database access, broken authorization, and unverified payment webhooks are the findings worth stopping for. Each one means someone other than you can already reach something they should not.
Fix next
Missing hardening headers, weaker CSP, incomplete monitoring, and cleanup tasks still matter, but they are usually secondary to direct exposure or access control failures. Use the HTTP security headers checklist to handle browser protections clearly.
What a clean assessment looks like
You have finished the assessment — as opposed to run out of patience — when you can state each of these from something you actually observed, not from what the code appears to do:
A fresh scan of the live URL has no exposed secrets or public sensitive files.
Every table or collection with private data has scoped access rules.
Normal users cannot perform admin or owner-only actions.
Payments, webhooks, and plan permissions are verified server-side.
The app has HTTPS, basic security headers, and intentional robots/sitemap behavior.
You know which risks remain and whether they require a deeper audit.
That result tells you where the app stands today. Turning it into a ship-or-wait call is a separate step: the launch security checklist is the sequenced pass to run on the day, and the AI app launch readiness guide covers the non-security half of that decision — production configuration, monitoring, and whether you can roll back when something breaks.
A clean result is not a guarantee
This process catches common risks, but it does not replace a qualified audit for high-risk apps. Use it to make an informed decision, not to claim perfect security.
Frequently asked questions
- How do I check if my web app is secure?
- Check your web app in two passes. First, run an external scan of the live URL for exposed secrets, public files, HTTPS issues, missing security headers, and obvious risky routes. Second, manually test auth, authorization, database access, admin actions, payment flows, and any sensitive business logic. Fix high-severity exposure first, then rescan.
- How is testing my app different from following a security checklist?
- A checklist tells you which areas to review; testing tells you what your app actually does. Reading your code and concluding that users can only see their own rows is a guess. Signing in as a second account, changing an ID in the request, and watching the server refuse it is evidence. Use a checklist to make sure you covered every area, and testing to confirm each one behaves the way you think it does.
- Can I check web app security without being a security expert?
- You can catch many common launch issues without being a security expert by using a clear external scan and a practical manual checklist. You may still need a qualified developer or security reviewer for complex authorization, regulated data, payments, enterprise access, or high-risk workflows.
- Should I scan before or after fixing security issues?
- Both. Scan before fixing to find the visible issues, then scan again after changes to confirm the live app no longer exposes them. A local code change does not count as fixed until the deployed site is clean.
Related resources
Best website security scanner for startups
How founders should choose a website security scanner before launch: what matters, what to avoid, and when a scanner is enough.
Read moreFree website security scan
What a free website security scan can check, what it cannot prove, and how to use one before launching a startup or AI-built app.
Read moreIs my Lovable app secure?
How to check a Lovable app before launch: Supabase RLS, the public anon key, VITE_ environment variables, auth, and the gaps AI builders commonly leave open.
Read moreCheck your web app before launch
Run a free GuardMint scan on your live URL and get a prioritized report for exposed secrets, public files, weak headers, HTTPS issues, and obvious launch blockers.