How to Run a Basic Vulnerability Scan on Your Website Without Breaking It

Running a vulnerability scan against your own website is one of the highest-return hours you can spend on security, and it's the step most site owners quietly skip. The reason is usually fear: what if the scan takes the site down, floods the logs, or gets my IP banned by the host? Those things do happen, but they're the result of careless settings, not scanning itself. With a few sensible limits and a copy of the site to practise on, you can surface outdated software, leaked files and sloppy headers before someone else finds them first.

Before You Press Start

Scanning is intrusive by nature. Even a polite scan sends hundreds of requests your server has to answer, and some checks try to exploit what they find. So the first step isn't technical.

If you own the site outright and host it yourself, you're free to test it. If a client, employer or agency owns it, get written permission that names the domain and the date range. Shared hosting agreements sometimes restrict scanning activity, so a quick look at the terms or a message to support saves awkward conversations later. Never point a scanner at a domain you don't control, even "just to see".

Second: make a copy. A staging clone behind HTTP authentication, or a local container running the same CMS and plugins, is the ideal target. Everything below works there. You only scan production when there's no realistic alternative, and then only with the throttled settings described further down.

What Free Scanners Actually Catch

Basic scanners are not magic. They compare your responses against large libraries of known signatures and misconfigurations. That still covers a remarkable amount of real-world breakage:

  • Missing or weak security headers — no HSTS, no Content-Security-Policy, permissive referrer or permissions policies.
  • Outdated components — a CMS core, plugin, theme or JavaScript library with a known vulnerability and a readable version number.
  • Exposed files — .git directories, .env files, database dumps, editor backups like index.php~, and leftover phpinfo() pages.
  • Directory listing enabled where it shouldn't be.
  • TLS problems — expired certificates, weak protocols, missing intermediate chains.
  • Verbose errors and debug output that reveal stack traces, paths or framework versions.

What they generally won't find: logic flaws in your own code, access-control mistakes that need a valid session, or anything behind a login. Keep expectations calibrated.

Picking Tools Without Spending Anything

Start with the read-only checks, because they cannot break anything. A header grading service or an SSL/TLS configuration tester goes first — one page load, one report, zero risk, and plenty of findings to fix.

When you're ready for a deeper pass, the open-source staples are Nikto for web server misconfigurations, OWASP ZAP's baseline scan for a low-impact crawl and passive rule set, Nmap for open ports and service versions, testssl.sh for TLS, and Nuclei for templated checks against known exposures. Run one tool at a time. Two scanners hammering the same server simultaneously is how you turn a quiet afternoon into an outage.

Safe Settings That Won't Knock the Site Over

The default configuration of most scanners is built for speed, not for your server's patience. Adjust these before you launch:

  1. Throttle the request rate. Cap requests per second to something a human browsing session wouldn't exceed, and lower the concurrency to one or two threads.
  2. Turn off intrusive and fuzzing checks for the first run. Scan, review, then consider enabling them on staging only.
  3. Skip form submissions and login attempts. Automated login testing can lock accounts, trip rate limiters, and send real emails to real customers.
  4. Work off-peak. Late evening in your audience's timezone is friendlier to both visitors and databases.
  5. Expect the WAF to interfere. Cloudflare and similar services may return 403s or block your IP mid-scan. Whitelist your scanning address temporarily, or accept partial results and note it.
  6. Watch the server, not just the scanner. Keep an eye on CPU, memory and error logs during the run. If load spikes, stop and lower the rate.
Tip: tell your host or your team before you scan. A surprise traffic spike at 2 a.m. is how you get a phone call.

Reading the Report Without Panicking

A first scan on an older site often produces dozens of findings, and most of them are not emergencies. Severity labels are generated by rules, not by judgement, and false positives are routine — a scanner may flag a "backup file" that returns your homepage, or a header you set at the CDN edge.

Verify each finding by hand before you act on it. Request the URL yourself. Check whether it's reachable without authentication. Confirm the version number in the page source. Then sort into three piles: fix now (exposed secrets, reachable admin panels, a component with an active exploit), fix this month (headers, TLS tuning, directory listing, error verbosity), and ignore with a note (informational items, unreachable paths). Keep that written list. Re-scanning later is much easier when you know what you deliberately left alone.

The Fixes That Clear Most Findings

Happily, the same handful of chores closes out the majority of a basic scan. Update the CMS core, plugins and themes, and delete anything you're not using — inactive plugins still ship vulnerabilities. Add the security headers your scanner complained about. Disable directory listing in your web server config. Move backups, .env files and dumps outside the web root, and block .git at the server level. Switch off debug output in production. Put multi-factor authentication on admin panels, or restrict them by IP. Tighten TLS to modern protocols and ciphers.

None of that is exotic. It's maintenance, and it's the difference between being an easy target and a boring one.

Make Scanning a Habit, Not an Event

One scan tells you about today. A schedule tells you about the year. Run the quick header and TLS checks monthly, a fuller scan quarterly, and a fresh pass after every major update, plugin install or deployment. Keep the reports somewhere you'll find them and note what you fixed and when.

And be honest about the limits: vulnerability scanning finds known problems, not unknown ones. It doesn't replace careful code review or a proper penetration test if you handle sensitive data. If you're unsure whether you're permitted to scan a particular asset, ask before you run anything. Then start with the staging copy, keep the throttle low, and work through the list.

Photo: Boskampi / Pixabay