How to Pentest Your Own Web App Without Being a Security Expert
You don't need to be a hacker to test your app's security. A practical guide to finding real vulnerabilities using free tools and your browser's dev tools.
Penetration testing sounds intimidating. The word itself conjures images of hooded hackers in dark rooms running arcane terminal commands. But the reality is that most web application vulnerabilities are found through systematic checking, not genius-level hacking.
You built the app. You know how it works, what endpoints exist, and what data it handles. That actually puts you in a better position than an outside auditor. Here's how to do a meaningful security check using free tools and your browser.
The Tools (All Free)
You don't need expensive security software. Here's what you'll use:
- Your browser's Developer Tools — already installed, covers 60% of what you need
- OWASP ZAP (zaproxy.org) — free, open-source scanner that automates common checks. One-click "Automated Scan" mode for beginners
- Burp Suite Community Edition (free) — proxy tool for intercepting and replaying requests. More hands-on than ZAP but more flexible
- curl or Postman — for manually testing API endpoints outside the browser
Step 1: Map Your Attack Surface
Before testing anything, list every way someone can interact with your application. Open your browser's dev tools, click through your entire app, and watch the Network tab. Write down every API call, every query parameter, every form submission.
If you want to automate this, OWASP ZAP has a "Spider" feature — point it at your URL and it crawls through every page and link it can find, building a site map automatically. This catches endpoints you might forget about.
Step 2: Check Your Security Headers
Open dev tools, go to the Network tab, click on your main page request, and look at the Response Headers. You're looking for:
- Content-Security-Policy — tells the browser what resources are allowed to load
- Strict-Transport-Security — forces HTTPS connections
- X-Content-Type-Options — prevents MIME type sniffing
- X-Frame-Options — prevents clickjacking via iframes
- Referrer-Policy — controls what information leaks in the Referer header
Step 3: Test Authentication
Use curl or Postman to send 50 login requests with wrong passwords in rapid succession. Does the server slow you down, return a 429 status, or lock the account? If it keeps returning 401 at the same speed, you have no brute force protection.
Check how your session tokens work. In dev tools, go to Application > Cookies. Are your session cookies marked httpOnly (good — JavaScript can't steal them) or are tokens in localStorage (any XSS vulnerability can exfiltrate them)? Do they have the Secure flag? A SameSite attribute?
Step 4: Test Authorization (Where Most Apps Fail)
This is the most important test and the one AI-built apps fail most often. Create two user accounts. Log in as User A, open dev tools, and find an API request that returns User A's data. Copy that request as a curl command (right-click > Copy > Copy as cURL).
Now log in as User B in an incognito window. Get User B's session cookie. Replace the cookie in the curl command you copied and run it. If it still returns User A's data, you have an IDOR vulnerability. Repeat this for every endpoint that serves user-specific data.
Step 5: Check for Information Disclosure
Try accessing paths that shouldn't be public: /.env, /.git/config, /api/debug, /admin, /graphql (which often has introspection enabled by default). Use curl to check response codes — a 200 on any of these is a problem.
Look at your API responses. Are they returning more data than the frontend displays? A common pattern in AI-built apps: the API returns the full user object (including email, internal IDs, sometimes even hashed passwords) even though the frontend only shows the username. Check the Network tab for every API response.
Step 6: Run an Automated Scan
Manual testing catches business logic issues that automated tools miss. But automated scanners catch the broad, systematic issues — missing headers, known vulnerability patterns, exposed endpoints — faster and more thoroughly than manual testing ever could.
The best approach is both: run an automated scan to catch everything systematic, then manually test the authorization and business logic that's specific to your application.
Skip the setup — scan your app automatically at nullscan.io