Website security checklist
TLS and SSL
Confirms the site serves HTTPS, redirects plain HTTP, and has a current certificate that covers the hostname.
- HTTPS availability
- Certificate expiry and hostname coverage
- HTTP-to-HTTPS redirect
- Mixed content and insecure form actions
Security headers
Reviews browser-enforced protections that reduce XSS, clickjacking, MIME sniffing, and downgrade risks.
- Content-Security-Policy
- Strict-Transport-Security
- X-Frame-Options
- Permissions-Policy
Exposure checks
Looks for public files and metadata that commonly reveal credentials, source control data, deployment details, or sensitive paths.
- .env and backup files
- Source control paths
- Directory listings
- robots.txt disclosures
Server configuration
Flags unnecessary technology disclosure and server behavior that makes targeting or exploitation easier.
- Server header leakage
- Error-page disclosure
- CORS posture
- Risky HTTP methods
Common vulnerability signals
Uses non-destructive public checks and framework-specific probes to identify obvious known-risk patterns without modifying the site.
- Open redirect indicators
- React Server Components (React2Shell) signals
- Exposed debug endpoints
- Admin panel exposure
Operational best practices
Checks the public basics that support responsible disclosure, third-party script integrity, and session safety.
- security.txt
- Subresource Integrity on CDN resources
- Secure, HttpOnly and SameSite cookie flags
How the website security scan works
Encryption
- Certificate validity, expiry and hostname coverage
- HTTP-to-HTTPS redirect
- Mixed content on HTTPS pages
- Secure, HttpOnly and SameSite flags on session cookies
- Forms that submit to HTTP URLs
Browser security headers
- Strict-Transport-Security max-age, includeSubDomains and preload
- Content-Security-Policy without unsafe-inline, unsafe-eval or wildcards
- Clickjacking protection (X-Frame-Options or frame-ancestors)
- X-Content-Type-Options: nosniff
- Referrer-Policy
- Permissions-Policy
- CORS wildcard and null origins
Information exposure
- .env, configuration, database dump and dependency files
- Backup copies (.bak, .old, .orig, .swp and similar)
- Public JavaScript source maps
- Git, SVN, Mercurial and Bazaar metadata
- Server and technology version disclosure
- Sensitive paths listed in robots.txt
Server configuration
- Directory listing
- Reachable admin and login panels
- Debug, status and metrics endpoints
- TRACE, PUT and DELETE methods
Known vulnerability signals
- React Server Components (React2Shell) response signals
- Open redirects through common redirect parameters
- Stack traces and framework details on error pages
Security practices
- security.txt with Contact and Expires fields
- Subresource Integrity on CDN scripts and stylesheets
How the grade is calculated
Scoring starts at 100. A failed check deducts 25, 15, 10 or 5 points for critical, high, medium or low severity, and a warning deducts 15, 10, 5 or 2. Checks that could not complete and informational findings do not change the score. A+ is 90 or more, A is 80-89, B is 65-79, C is 50-64, D is 35-49 and F is below 35.
What this scan does not check
A clean result means these public checks passed at scan time. It is not a full security assessment, so plan separate testing for the areas below.
- Authenticated pages, logged-in user journeys and business logic
- Pages beyond the submitted URL and the fixed list of well-known paths
- TLS protocol versions and cipher suites
- Installed software versions against vulnerability databases, apart from the React2Shell signals
- Injection, brute-force or denial-of-service testing
- Malware, blocklist and reputation status
- DNS and email authentication records, which the Email Security check covers
What each result means
Pass
The control is present or configured in a way that meets the scanner baseline.
Warning
The control exists but is incomplete, weak, overly permissive, or missing context needed for a clean pass.
Fail
The scanner found a missing or risky control that should be fixed before relying on the site for sensitive workflows.
Error
The check could not be completed reliably, usually because the target blocked the request, timed out, or returned an unexpected response.
Common vulnerabilities this catches
Missing HSTS
Risk: Browsers may allow downgrade attacks or accidental HTTP access after a user has visited the site.
Next step: Serve all traffic over HTTPS first, then enable a long HSTS max-age with includeSubDomains when subdomains are ready.
Weak or absent Content-Security-Policy
Risk: Injected scripts have more room to execute if an XSS bug appears in the application.
Next step: Start with report-only CSP, remove unsafe inline script usage where practical, then enforce a tight production policy.
Clickjacking exposure
Risk: Attackers may be able to frame sensitive pages and trick users into taking unintended actions.
Next step: Use frame-ancestors in CSP or X-Frame-Options on pages that should never be embedded.
Exposed environment or backup files
Risk: Public configuration files can leak credentials, internal URLs, API keys, or deployment details.
Next step: Remove exposed files, rotate any leaked secrets, and block sensitive extensions and dotfiles at the edge.
Next steps after the check
Get started with the Vigilbase Platform
Connect the security tools you already pay for to the cybersecurity operating system, and have the Vigil agent investigate what matters.
Open resourceTalk to us about Managed Cloudflare
If this is more than a missing header, the next step is an operator, not another scan.
Open resource