HackproofHacks
Pillar guide

Website Security Audit: A Practical Guide

A website security audit is a structured review of a site's configuration, headers, certificates, exposed surface, and known-vulnerability status. Most of it you can check yourself with free tools in under an hour. It is not the same as a penetration test: an audit tells you what's misconfigured or exposed, while a penetration test tries to exploit weaknesses, including ones a checklist can't catch, like business-logic flaws.

"Security audit" gets used loosely, so this page defines it narrowly: a structured pass over the things that are checkable from the outside, without needing to log in or run exploit code: TLS configuration, security headers, DNS/email-spoofing protection, and exposed subdomains. It's the right first step before deciding whether you need a full penetration test.

What a security audit checks

  • TLS/SSL configuration: certificate validity, expiry, and whether the configuration itself is modern and correctly served.
  • Security headers: whether the site sends the headers that stop common browser-side attacks (CSP, HSTS, X-Content-Type-Options, and others).
  • Email-spoofing protection: SPF, DKIM, and DMARC records, which determine whether attackers can send phishing email that appears to come from your domain.
  • Exposed attack surface: subdomains that are live, forgotten, or pointing at services you no longer actively maintain (a common source of takeover and data-exposure findings).
  • Known-vulnerability exposure: outdated software versions or components with disclosed CVEs, visible from the outside.

Security audit vs penetration test vs vulnerability scan

A vulnerability scan and a security audit overlap heavily: both are largely automated, outside-in checks. The difference is scope. An audit, as described here, is specifically about the externally-visible configuration surface (TLS, headers, DNS, exposed hosts), while a vulnerability scan is broader and includes checking software versions across everything in scope for known CVEs.

Neither replaces a penetration test. A misconfigured header or an expired certificate is a real finding, but it's a configuration problem. A penetration test is what finds the business-logic flaw where one customer can read another customer's invoice, which no header check or TLS scan will ever surface. See the full breakdown on the vulnerability assessment vs penetration testing page.

Free first-pass checklist

Run these four checks yourself, free, in under an hour. Each links to the tool that runs it; no signup required for a single scan.

  1. 1

    Check your SSL/TLS configuration

    Run the SSL Certificate Checker to confirm your certificate is valid, not close to expiry, and correctly configured. An expired or misconfigured certificate is one of the most common, and most embarrassing, findings.

  2. 2

    Grade your security headers

    Run the HTTP Header Analyzer to see which protective headers (CSP, HSTS, and others) your site is missing, and get a plain-language explanation of what each one prevents.

  3. 3

    Map your subdomains

    Run the Subdomain Finder to see every subdomain associated with your domain that's publicly discoverable. Forgotten staging environments and unused subdomains are a common way into an otherwise well-secured site.

  4. 4

    Review what you found and prioritize

    Fix anything flagged as high-severity first (expired certificates, missing HSTS, an exposed staging environment), then decide whether the remaining surface justifies a full manual penetration test.

When to move from self-audit to a professional test

The checklist above catches configuration problems, not logic problems. Move to a professional penetration test once the site handles customer data, payments, or authentication with real accounts and permissions. That's exactly the territory where a manual tester finds what an automated check structurally cannot: broken access control, authorization gaps, and chained exploits.

It's also the point where a compliance framework or an enterprise customer's security review will ask for a penetration test by name, at which point a self-audit, however thorough, will not be accepted as a substitute.

Frequently asked questions

How long does a website security audit take?

The free self-audit checklist above takes under an hour. A professional, manual penetration test is a different scale of engagement, typically one to three weeks depending on scope, because a person is testing the application rather than running automated checks.

Is a free website security audit useful, or just a lead-gen gimmick?

The checks themselves are real and useful. TLS configuration, header grading, and subdomain enumeration are genuine, commonly exploited weak points, and fixing what they find measurably reduces risk. What a free automated pass will never do is find a business-logic or access-control flaw, which is exactly why it's a first step, not a substitute for a manual test.

How often should I audit my website?

The free checklist items (TLS, headers, subdomains) are cheap enough to re-run monthly or after any infrastructure change. A full penetration test is typically annual, or triggered by a major change, a new compliance requirement, or before a launch handling sensitive data.

Does fixing everything in the checklist mean my site is secure?

No. It means the externally-visible configuration surface is clean, which is a real and worthwhile baseline. It says nothing about whether your application's authorization logic, API, or business logic can be broken, which is what a penetration test is specifically designed to find.

Related guides

Related services

Ready to scope your test?

Book a free 30-minute scoping call. We agree the scope, timeline, and a fixed price up front, with no obligation and no surprises for your deadline.