Security checklist for a business website: the 20 items we verify

The twenty security items we verify on every business website before launch and on every monthly check, with what each protects and how to confirm it.

5 minread 1,048words last updated

The short answer

The security of a typical business website comes down to twenty items across five areas: ownership and accounts, transport and headers, forms and functions, secrets and dependencies, and monitoring and response. Most are configuration and discipline rather than products, and a static site served through a network layer satisfies many of them by construction. What makes the list a control rather than a document is that each item has a way to be confirmed, before launch and on every monthly check, with the result in the report. An item that cannot be confirmed is treated as failing until it can. A site that passes all twenty is better protected than the ordinary business site, and the whole list can be brought from failing to passing within a week on a modern platform.

The twenty items

#ItemProtects againstHow we confirm it
1Domain registered in the business’s name, locked, auto-renewingLoss of the domainRegistrar account and WHOIS checked
2Two-factor authentication on registrar, DNS, hosting, repository and email accountsAccount takeoverEach account’s security settings checked
3Per-person accounts with least privilege; no shared loginsUntraceable access; messy offboardingMember lists reviewed; access register current
4Hosting project and repository owned by the business’s organisationDependence on a supplier’s personal accountOwnership pages checked
5HTTPS everywhere with valid certificates and automatic renewalInterception; browser warningsCertificate checked; renewal automated
6HSTS enabledDowngrade to insecure connectionsHeader present with a long max-age
7Security headers set: content type options, frame options or frame ancestors, referrer policy, permissions policyFraming, sniffing and leakage attacksHeader scan clean
8Content security policy in place and enforcedInjected scripts runningPolicy present; violations monitored
9No mixed contentPadlock loss; partial interceptionCrawl clean
10Forms validated on the server, with a bot check and a honeypotSpam floods and injection through formsTest submissions with malformed input rejected
11Rate limits on forms, functions and any loginFloods, guessing, runaway costsLimit events visible in logs; test hits the limit
12Functions send only to fixed destinations; no user-controlled recipientsSite used as a spam relayFunction code and configuration reviewed
13Secrets only in platform secret storage; none in code, history or front endLeaked keysRepository history scanned; front-end bundle inspected
14One key per integration with minimal permissionsBlast radius of a leakProvider dashboards reviewed
15Dependency scanning on every build; updates applied within defined timesKnown vulnerabilities in packagesPipeline configuration; last advisory handled on time
16Third-party scripts registered, minimal, loaded after consent where requiredData leakage; supply chainNetwork panel matches the register
17Network layer in front with managed protection; origin not directly reachableFloods and scannersDirect origin request fails; layer analytics show blocks
18External monitoring of uptime, certificates and domain expiry, with alerts to named peopleUndetected outages and expiriesTest alert received
19Backups of anything not in the repository, stored elsewhere, restore testedData lossLast restore test dated
20One-page incident response plan with roles and contactsSlow, chaotic responsePlan exists, dated within a year, people know it

Running the checklist

  1. Before launch: every item confirmed, with evidence, and the results in the launch report.
  2. Monthly: items 2, 3, 13, 15, 16, 18 and 19 re-confirmed because they drift fastest; the rest quarterly.
  3. After any change to hosting, DNS, integrations or people: the relevant items re-confirmed.
  4. Failures are fixed within a week or given a dated plan in the report.
  5. The report lists each item with confirmed, failed or planned, so the business can see the state at a glance.

What the architecture gives you for free

A static site behind a network layer passes several items by construction: no server code to inject into, no database to protect, no public admin to defend, floods absorbed at the edge, files served with headers set once. The remaining items are the accounts, the forms and functions, the secrets, the dependencies and the monitoring, which is a manageable list and mostly discipline.

What this means for you

Twenty items, verified with evidence before launch and re-confirmed monthly, cover the security of a business website: accounts and ownership, transport and headers, forms and functions, secrets and dependencies, monitoring and response. Most are configuration and discipline, a static architecture satisfies many by construction, and any site can pass all of them within a week. Insist on the list with dates, and read it every month.

Written by the CivSec S.M.A.R.T team

We build and run websites, software and AI systems for businesses. We write about what we see in that work, in plain language, and we update articles when things change.

Last checked . Spotted something outdated? Tell us.

Frequently asked questions

Is this checklist enough for an application with logins and data?

It is the foundation; an application adds items on authentication, sessions, access control, input handling, uploads, database access and logging, and needs the testing sequence before launch. For a business website with content and forms, these twenty are the substance, and a site that passes all of them is better protected than most.

Who runs the checklist?

Your partner, before launch and as part of the monthly routine, with the results in the monthly report. The business's part is to read the report, to hold the accounts the checklist says should be in its name, and to ask when an item is marked as not confirmed. A checklist nobody runs is a document; one run monthly with evidence is a control.

What if we fail several items today?

Prioritise by impact: accounts and ownership first, because losing the domain or the hosting account is the worst outcome; then secrets and updates, because they are how sites are actually breached; then transport, headers, forms and monitoring. Most items take minutes to hours to fix on a modern platform, and a site can go from failing half of them to passing all within a week.

Sources

  1. OWASP Cheat Sheet Series (reference collection) (accessed 2026-09-14)