
How to create a website security checklist?
To create a website security checklist, start by listing everything your site depends on (hosting, domain, CMS, plugins, third-party services, and user accounts), then write down the specific security controls each one needs, and finally assign every item an owner and a frequency: once at setup, weekly, monthly, quarterly, or after specific events. A good checklist is short enough that someone actually works through it, specific enough that each item is either done or not, and reviewed often enough that it stays accurate.
Generic "top 50 security tips" lists are a useful starting point, but they rarely match the way your own site is built. This article walks you through creating a checklist that fits your website, explains what belongs in each section, and gives you a ready-to-adapt template you can copy into a document, spreadsheet, or project management tool.
Why You Need a Website Security Checklist
Most website compromises do not come from sophisticated attacks. They come from small, forgotten things: a plugin nobody updated, an old freelancer account that still has admin rights, a backup job that silently stopped running six months ago. A checklist exists to catch those gaps before an attacker does.
A written checklist helps you:
- Stay consistent: Tasks happen on schedule instead of only when someone remembers.
- Share responsibility: Everyone on the team knows who is doing what.
- Onboard people quickly: A new developer or agency can see your security baseline at a glance.
- Prove due diligence: If you ever need to show a client, insurer, or regulator what you do to protect data, a dated checklist is strong evidence.
- Recover faster: When something does go wrong, you already know where your backups, logs, and credentials live.
Step 1: Inventory Your Website's Components
You cannot secure what you do not know exists. Before writing any checklist items, list every piece of your website's stack:
- Domain and DNS: Registrar, DNS provider, and who has login access to each.
- Hosting: Provider, server type (shared, VPS, managed, or cloud), and control panel.
- Application: WordPress, another CMS, or a custom framework, plus its version.
- Extensions: Every plugin, theme, module, or package, including inactive ones.
- Accounts: Every user with admin, editor, SSH, SFTP, database, or hosting access.
- Third-party services: Payment gateways, email delivery, CDN, analytics, forms, chat widgets, and backup services.
- Data: What personal or sensitive data you store, and where it lives.
For a WordPress site, WP-CLI can speed up the inventory:
wp core version
wp plugin list --fields=name,status,version,update
wp theme list --fields=name,status,version,update
wp user list --fields=user_login,user_email,roles
Save the output alongside your checklist so you can compare it on your next review.
Step 2: Group Controls Into Clear Categories
With your inventory in hand, organise your checklist into categories. This keeps it readable and makes it easy to spot areas you have overlooked. The categories below work well for most websites.
Access and Authentication
- Every person has their own account, with no shared logins.
- Each account uses the lowest role or permission level that fits the job.
- Two-factor authentication is enabled for admins, hosting, registrar, and DNS accounts.
- Passwords are unique and stored in a password manager.
- Login attempts are rate-limited or protected by a firewall.
- Former staff, contractors, and agencies are removed promptly.
Software and Updates
- CMS core is on a supported version with security updates applied.
- Plugins and themes are updated, and abandoned ones are replaced.
- Unused plugins and themes are deleted, not just deactivated.
- The server runs a supported PHP version (or Node.js, Python, and so on).
- Operating system packages are patched on VPS or dedicated servers.
Backups and Recovery
- Automated backups of files and database run on a schedule that matches how often content changes.
- At least one copy is stored off the server, with a different provider or account.
- Backups are encrypted and access to them is restricted.
- A test restore has been completed recently, and the steps are documented.
Encryption and Transport
- A valid TLS certificate is installed and set to auto-renew.
- All HTTP traffic redirects to HTTPS.
- HSTS is enabled once HTTPS is confirmed working across the site.
- No mixed content warnings appear on key pages.
Server and Application Hardening
- File and directory permissions follow your platform's recommendations.
- Directory listing is disabled.
- Sensitive files such as configuration files and backups are not publicly accessible.
- Security headers are set (such as
Strict-Transport-Security,X-Content-Type-Options,Referrer-Policy, and a Content Security Policy where practical). - Error messages do not reveal stack traces or file paths to visitors.
- For WordPress, file editing from the dashboard is disabled in
wp-config.php.
Monitoring and Detection
- Uptime monitoring alerts you when the site goes down.
- A firewall or security plugin logs and blocks suspicious traffic.
- File change or malware scanning runs regularly.
- Admin activity is logged.
- Someone reviews alerts and logs on a defined schedule.
Third-Party Services and Scripts
- Every external script on your pages is known and still needed.
- Third-party accounts use strong passwords and two-factor authentication.
- API keys are stored securely and scoped to the minimum permissions.
- Data processing agreements are in place where personal data is shared.
Incident Readiness
- A short written incident response plan exists.
- Contact details for your host, developer, and security provider are recorded.
- You know where logs are kept and how long they are retained.
- You know your legal notification duties if personal data is involved.
Step 3: Make Every Item Specific and Testable
Vague items such as "keep the site secure" or "check plugins" do not help anyone. Rewrite each item so a person can clearly mark it done or not done.
Compare these:
-
Vague: "Check backups."
-
Specific: "Confirm last night's backup completed in the backup dashboard and that the off-site copy is less than 24 hours old."
-
Vague: "Review users."
-
Specific: "Export the user list, confirm every administrator is a current team member, and downgrade or delete anyone who is not."
Where possible, include how to check. You can even add quick commands. For example, verifying your security headers:
curl -sI https://example.com | grep -iE "strict-transport-security|x-content-type-options|referrer-policy|content-security-policy"
Or confirming WordPress core files have not been modified:
wp core verify-checksums
Step 4: Assign a Frequency to Each Item
Not every task needs doing every week. Grouping items by frequency keeps the checklist manageable.
One-Time Setup Items
These are done when you launch the site or first adopt the checklist, and revisited when something changes:
- Enable HTTPS and HSTS.
- Configure security headers.
- Disable file editing, directory browsing, and unnecessary services.
- Set up automated backups and off-site storage.
- Install a firewall or security plugin.
- Enable two-factor authentication on all critical accounts.
For WordPress, a couple of hardening lines in wp-config.php (above the /* That's all, stop editing! */ line) are typical setup items:
define( 'DISALLOW_FILE_EDIT', true );
define( 'FORCE_SSL_ADMIN', true );
Weekly Items
- Apply available security updates for core, plugins, and themes (or confirm auto-updates ran).
- Review firewall and login alerts.
- Confirm backups completed.
Monthly Items
- Review the user list and remove unneeded accounts.
- Run a malware or file integrity scan and review the results.
- Check for plugins that have been closed or not updated in a long time.
- Review uptime and error logs for unusual patterns.
Quarterly Items
- Perform a full test restore from backup to a staging environment.
- Review third-party scripts and services.
- Rotate critical credentials such as API keys and database passwords where practical.
- Run an external vulnerability scan.
- Review and update the checklist itself.
Event-Driven Items
Some tasks should happen when something specific occurs:
- Someone leaves the team: Remove their accounts and rotate any shared secrets they knew.
- A new plugin is installed: Check its reputation, update history, and permissions.
- A major platform update is released: Test on staging, then update production.
- A security alert is received: Follow the incident response plan.
Step 5: Assign Owners
A task that belongs to everyone belongs to no one. Put a name next to each item or category. On a small site, that might be one person. On larger teams, split it up:
- Developer or agency: Updates, hardening, code reviews, staging tests.
- Site owner or manager: User access reviews, third-party service accounts, incident decisions.
- Hosting provider: Server patching and infrastructure security, if they manage it. Write down exactly what your host covers so there are no assumptions.
Step 6: Choose Where the Checklist Lives
The best format is the one your team will actually use. Common options include:
- A spreadsheet: Columns for item, category, frequency, owner, last completed date, and notes.
- A project management tool: Recurring tasks in tools like Asana, Trello, ClickUp, or Linear, which send reminders automatically.
- A document in your repository: A Markdown file in your project repository, reviewed alongside code changes.
- A maintenance plugin or service: Management dashboards such as MainWP or ManageWP can handle updates, backups, and uptime checks across many WordPress sites, which covers a large part of the recurring items.
Whatever you choose, record the date each item was completed. That history is what turns a checklist into evidence.
A Ready-to-Use Website Security Checklist Template
Here is a condensed template you can adapt. Remove items that do not apply and add anything specific to your stack.
Setup (once, then on change)
- HTTPS: TLS certificate installed, auto-renewing, HTTP redirects to HTTPS, HSTS enabled.
- Accounts: Unique accounts, least privilege, 2FA on admin, hosting, DNS, and registrar.
- Hardening: File editing disabled, directory listing off, sensitive files blocked, security headers set.
- Protection: Firewall and login rate limiting in place.
- Backups: Automated, encrypted, off-site, with a documented restore process.
- Monitoring: Uptime alerts, security alerts, and activity logging configured.
- Plan: Incident response plan written and contact list recorded.
Weekly
- Updates: Core, plugins, and themes updated or auto-updates verified.
- Alerts: Security and login alerts reviewed.
- Backups: Latest backup confirmed.
Monthly
- Users: Accounts reviewed and pruned.
- Scans: Malware and integrity scans reviewed.
- Extensions: Abandoned or unused plugins and themes removed.
Quarterly
- Restore test: Full restore to staging completed.
- Third parties: Scripts and service accounts reviewed.
- Credentials: Critical secrets rotated.
- Vulnerability scan: External scan completed and findings addressed.
- Checklist review: This checklist updated.
Common Mistakes to Avoid
Making it too long: A 200-item checklist looks impressive but gets ignored. Start with the items that prevent the most common problems and grow it over time.
Copying someone else's list without adapting it: A list written for an enterprise Kubernetes platform does not fit a small WordPress brochure site, and vice versa.
Never updating it: Your site changes. New plugins, new staff, and new services all need to be reflected.
Checking boxes without verifying: Marking "backups done" without confirming a backup actually exists defeats the purpose.
Keeping it in one person's head: If only one person knows the process, the checklist stops the day they go on holiday.
FAQ: Website Security Checklists
At minimum, cover unique accounts with two-factor authentication, regular updates, off-site backups with tested restores, HTTPS, a firewall or login protection, monitoring, and a short incident response plan.
Work through the recurring items on their assigned schedule, such as weekly, monthly, and quarterly, and review the checklist itself at least once a quarter or whenever your site's setup changes significantly.
No. A security plugin automates some controls, like firewalls and scans, but it cannot review your user accounts, test your backups, or manage third-party services. A checklist covers the human and process side.
Either works. A spreadsheet is simple and easy to audit, while a task manager with recurring tasks sends reminders automatically. Choose whichever your team is most likely to keep using.
Assign an overall owner, usually the site owner or lead developer, and a named person for each item or category. Write down which tasks your hosting provider handles so nothing falls between the cracks.
Yes, as a base template. Keep a shared core list and add a short site-specific section for each website that reflects its own plugins, services, and data.
Conclusion
Creating a website security checklist is less about finding the perfect list of tips and more about building a routine that fits your site. Start with an inventory of everything your website relies on, group controls into clear categories, write each item so it can be verified, and give every task a frequency and an owner.
Once it exists, the checklist only works if you use it. Record completion dates, revisit the list whenever your stack changes, and keep it short enough that it never feels like a chore. A modest checklist followed consistently will protect your site far better than an exhaustive one that sits in a folder untouched.


