Website Security Checklist for Small Businesses: Complete 2026 Guide

Protect your business website with this comprehensive security checklist. Covers SSL, malware protection, backups, access control, monitoring, and incident response. Includes WordPress-specific and platform-agnostic steps.

TW

TheWebPal Team
Published on August 21, 2026

18 min read min read
Website Security Checklist for Small Businesses: Complete 2026 Guide

A hacked website costs far more than prevention.

Average cost of a small business data breach: $120,000–$1.24M (IBM/Ponemon 2024) 60% of small businesses close within 6 months of a cyber attack (US National Cyber Security Alliance) 43% of cyber attacks target small businesses β€” yet only 14% are prepared (Accenture)

This checklist covers every layer of website security. Use it as your quarterly audit. Check off each item. Fix gaps immediately.


Quick-start: the 5 non-negotiables (do these today)

An infographic visualizing security as concentric rings surrounding a central database. The rings are labeled from outside to inside: 'Edge/CDN Firewall', 'WAF & Security Plugin', 'Server Hardening', 'Core Software Updates', and 'Access Control'. It shows multiple layers of protection.

# Action Why Time
1 Enable HTTPS/SSL (valid certificate, HSTS) Encrypts all traffic; ranking signal; trust 15 min
2 Set up automated daily backups (off-site, tested) Recovery from hack, error, hardware failure 30 min
3 Enforce strong passwords + 2FA on all admin accounts Stops 99% of credential stuffing/brute force 10 min
4 Update everything (CMS, plugins, themes, PHP, server) Patches known vulnerabilities 20 min
5 Install security plugin/firewall (Wordfence, Cloudflare WAF) Blocks attacks before they reach your site 15 min

If you only do these five, you’re ahead of 80% of small businesses.


Complete website security checklist

1. SSL / HTTPS / Transport Security

  • Valid SSL/TLS certificate β€” Let’s Encrypt (free) or paid (DigiCert, Sectigo). Auto-renewal enabled.
  • HTTPS enforced site-wide β€” 301 redirect HTTP β†’ HTTPS. No mixed content.
  • HSTS header β€” Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • Secure cookies β€” Secure; HttpOnly; SameSite=Strict on session cookies
  • TLS 1.2+ only β€” Disable TLS 1.0, 1.1, SSLv2, SSLv3 on server
  • Certificate transparency monitoring β€” Check for rogue certificates (crt.sh, SSLMate)

Test: SSL Labs Server Test β€” aim for A+


2. Access Control & Authentication

  • Unique admin usernames β€” Never β€œadmin”, β€œadministrator”, β€œroot”, business name
  • Strong passwords β€” 16+ chars, generated/stored in password manager (Bitwarden, 1Password)
  • Two-factor authentication (2FA) β€” Required for all admin/editor accounts (TOTP app, not SMS)
  • Limit login attempts β€” 5 failed = 15-min lockout; notify admin
  • Disable XML-RPC (WordPress) β€” Unless actively used for Jetpack/mobile app
  • Restrict admin access by IP β€” If team works from fixed IPs (.htaccess, Cloudflare, server config)
  • Separate accounts per person β€” No shared logins. Audit quarterly.
  • Remove unused accounts β€” Former employees, contractors, test accounts
  • Least privilege principle β€” Editors edit content; only admins install plugins/update core

3. Core Software Updates (Automate Where Possible)

  • CMS core β€” WordPress, Drupal, Joomla, Ghost, etc. Auto-update minor; test major
  • All plugins/extensions/modules β€” Remove unused. Update weekly.
  • Themes β€” Update parent + child themes. Delete unused themes.
  • PHP version β€” PHP 8.2+ required. 8.0/8.1 EOL. Ask host to upgrade.
  • Database β€” MySQL 8.0+ / MariaDB 10.6+. Update via host.
  • Web server β€” Nginx/Apache/LiteSpeed updated by host (verify)
  • Operating system β€” Host responsibility (ask for patch schedule)

WordPress: Enable auto-updates for plugins/themes in wp-config.php or via security plugin.


4. Malware Protection & Scanning

  • Active malware scanner β€” Wordfence (WP), Sucuri, MalCare, Imunify360 (server-level)
  • Scheduled scans β€” Daily quick scan; weekly full scan
  • Real-time firewall/WAF β€” Blocks known attack patterns (SQLi, XSS, RCE, bad bots)
  • File integrity monitoring (FIM) β€” Alerts on core file changes (Wordfence, Tripwire, AIDE)
  • Block PHP execution in uploads β€” .htaccess or Nginx rule: location ~* /uploads/.*\.php$ { deny all; }
  • Disable file editing in admin β€” WordPress: define('DISALLOW_FILE_EDIT', true);
  • Quarantine suspicious files β€” Don’t delete immediately; investigate first

5. Backups & Disaster Recovery

An infographic illustrating a secure backup process. A server icon (labeled 'Live Site') automatically copies data daily to a cloud storage bucket (labeled 'Off-Site Backup'). A small calendar shows '30-Day Retention'. An arrow leads to a 'Test Restore' icon, depicting a clean, isolated server environment.

  • Automated daily backups β€” Files + database. Off-site (cloud storage, not same server).
  • Retention policy β€” 30 daily + 12 weekly + 12 monthly minimum
  • Test restores quarterly β€” Restore to staging; verify integrity, functionality
  • Backup encryption β€” Encrypt at rest (AES-256) and in transit (TLS)
  • Separate backup credentials β€” Backup storage uses different auth than server
  • One-click restore β€” Documented, tested procedure. Time-to-restore < 30 min.
  • Database-only backup option β€” For quick content rollbacks

Tools: UpdraftPlus, BlogVault, Jetpack Backup, SnapShooter, host-provided (verify off-site)


6. WordPress-Specific Hardening (if applicable)

  • Change default database prefix β€” wp_ β†’ wpxyz_ (during install or via plugin)
  • Disable XML-RPC β€” add_filter('xmlrpc_enabled', '__return_false');
  • Disable REST API for non-authenticated β€” Unless headless/block editor needs it
  • Hide WordPress version β€” remove_action('wp_head', 'wp_generator');
  • Block author enumeration β€” Prevent ?author=1 scans
  • Limit password reset attempts β€” Prevent reset abuse
  • Secure wp-config.php β€” Move above web root; restrict permissions (400/440)
  • Disable plugin/theme install/update via admin β€” If managed via Git/Composer
  • Use security headers plugin β€” Or configure at server level (see Section 8)

7. Form & Input Security

  • CSRF tokens on all forms (nonce in WordPress)
  • CAPTCHA/honeypot on contact, login, registration forms
  • Input sanitization & validation β€” Server-side, not just client-side
  • File upload restrictions β€” Whitelist extensions (jpg, png, pdf); max size; scan uploads
  • Store uploads outside web root β€” Or serve via script with auth check
  • Rate limiting β€” Per IP on forms, login, search, API endpoints

8. Security Headers (Configure at Server/CDN Level)

Header Value Purpose
Content-Security-Policy default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https:; connect-src 'self' https://api.yoursite.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self' Prevents XSS, injection, unauthorized frames
X-Frame-Options DENY Prevents clickjacking
X-Content-Type-Options nosniff Prevents MIME sniffing
Referrer-Policy strict-origin-when-cross-origin Controls referrer leakage
Permissions-Policy camera=(), microphone=(), geolocation=(), payment=() Disables unused browser APIs
Cross-Origin-Opener-Policy same-origin Isolates browsing context
Cross-Origin-Resource-Policy same-origin Protects resources from cross-origin embed

Test: SecurityHeaders.com β€” aim for A


9. CDN & Edge Security (Cloudflare, BunnyCDN, CloudFront)

  • WAF enabled β€” OWASP Top 10 rules + managed rulesets
  • Bot management β€” Block known bad bots; challenge suspicious
  • Rate limiting β€” Login, API, search endpoints (e.g., 10 req/min/IP)
  • DDoS protection β€” Automatic mitigation (free tier on Cloudflare)
  • SSL/TLS mode β€” Full (Strict) β€” encrypts origin ↔ edge ↔ visitor
  • Cache purge on deploy β€” Prevents stale content
  • Origin shield β€” Hide origin IP (Cloudflare: β€œOrange Cloud” proxied)

10. Monitoring & Alerting

  • Uptime monitoring β€” 1-min checks; alert on downtime (UptimeRobot, Better Uptime, Pingdom)
  • SSL expiry monitoring β€” Alert 30/14/7 days before expiry
  • Malware scan alerts β€” Email/Slack on detection
  • File change alerts β€” FIM notifications for core files
  • Failed login alerts β€” Brute force detection
  • Admin login notifications β€” Know every admin access
  • Backup success/failure alerts β€” Don’t assume backups ran
  • Error rate monitoring β€” 5xx spikes = attack or breakage

11. Incident Response Plan (Documented, Accessible)

  • Contact list β€” Host support, developer, security consultant, legal
  • Isolation procedure β€” Maintenance mode, block traffic, pull origin from CDN
  • Forensic steps β€” Preserve logs, database, files before cleanup
  • Cleanup procedure β€” Malware scan β†’ remove β†’ verify β†’ patch β†’ restore
  • Communication template β€” Customer notification (if data breach)
  • Post-incident review β€” Root cause, lessons, checklist updates
  • Legal/compliance obligations β€” GDPR, CCPA, HIPAA, PCI-DSS notification timelines

12. Compliance & Privacy (If Applicable)

  • Privacy policy β€” Current, accessible, covers analytics, forms, cookies
  • Cookie consent banner β€” GDPR/ePrivacy compliant (Cookiebot, Complianz, Termly)
  • Data processing agreements β€” With hosts, analytics, email providers
  • PCI-DSS β€” If accepting payments directly (use Stripe/PayPal to avoid scope)
  • GDPR/CCPA β€” Data access/deletion requests process documented
  • Accessibility (WCAG 2.1 AA) β€” Not strictly security, but legal risk

Platform-specific quick reference

WordPress (5-minute hardening)

// wp-config.php additions
define('DISALLOW_FILE_EDIT', true);
define('WP_AUTO_UPDATE_CORE', 'minor');
define('AUTOMATIC_UPDATER_DISABLED', false);

// .htaccess (Apache) or Nginx config
# Block PHP in uploads
<FilesMatch "\.php$">
    Order Deny,Allow
    Deny from All
</FilesMatch>

# Protect wp-config.php
<Files wp-config.php>
    Order Allow,Deny
    Deny from all
</Files>

Install: Wordfence (free) β†’ enable firewall, 2FA, login limits, scans Configure: Cloudflare (free) β†’ SSL Full Strict, WAF, Bot Fight Mode, Rate Limiting

Static Sites (Astro, Next.js, Hugo, Jekyll)

  • Deploy via Git β€” No FTP/SFTP credentials on server
  • Edge functions β€” Auth, rate limiting, headers at edge (Vercel, Netlify, Cloudflare Pages)
  • Dependency scanning β€” npm audit, Snyk, GitHub Dependabot in CI
  • Content Security Policy β€” Strict CSP (no 'unsafe-inline' if possible)
  • Environment variables β€” Secrets in platform dashboard, never in repo

Custom / Headless / Ecommerce

  • API authentication β€” JWT/OAuth2, short expiry, refresh tokens
  • Rate limiting β€” Per user/IP on all endpoints
  • Input validation β€” Schema validation (Zod, Joi, Pydantic) on every endpoint
  • Database security β€” Parameterized queries only; least-privilege DB user
  • Payment security β€” Never handle raw card data. Use Stripe Elements, PayPal SDK.
  • Admin panel β€” Separate subdomain, IP-restricted, 2FA mandatory

Quarterly security audit checklist

Area Check Tool/Method
SSL Grade A+, no expiry < 30 days SSL Labs, certmonitor
Updates Core, plugins, PHP, DB all current WP Admin, composer, host panel
Backups Last 3 restores successful; off-site verified Restore to staging
Scans Malware scan clean; FIM no unexpected changes Wordfence, Sucuri, Imunify
Access Admin user list reviewed; 2FA on all; no shared creds User audit
Headers SecurityHeaders.com = A securityheaders.com
CDN/WAF Rules active; bot logs reviewed; no bypass Cloudflare dashboard
Monitoring Alerts tested; no silent failures Trigger test alert
Logs Access/error logs retained 90 days; reviewed Host/Cloudflare logs
Incident plan Document current; team knows location Tabletop exercise

Security budget: what to spend where

Priority Investment Typical Cost
1. Hosting with security Managed host (auto-updates, WAF, backups, PHP 8.2+) $30–100/mo
2. Cloudflare Pro WAF, rate limiting, bot management, APO $20/mo
3. Security plugin (Pro) Wordfence Premium / MalCare / Sucuri $100–200/yr
4. Backup service Off-site, encrypted, tested restores $50–150/yr
5. Uptime monitoring 1-min checks, multi-channel alerts $0–100/yr
6. Professional audit Annual penetration test / code review $1,500–5,000

Total: ~$600–2,000/year β€” vs. $120K+ average breach cost.


FAQ: website security for small businesses

How often should I run a security scan?

Daily automatic (quick) + weekly full scan + manual after any update or suspicious activity. Most security plugins handle scheduling.

Do I need a security plugin if my host has a firewall?

Yes. Host firewall (network layer) + application firewall (Wordfence/Cloudflare) = defense in depth. They catch different things.

What’s the most common way small business sites get hacked?

  1. Weak/stolen credentials (no 2FA, password reuse)
  2. Vulnerable plugins/themes (outdated, nulled/pirated)
  3. Outdated PHP/CMS (unpatched known exploits)
  4. Malicious file uploads (no validation, PHP execution enabled)
  5. Compromised admin device (keylogger, malware)

Can I secure my site without a developer?

Yes, for 80% of this checklist. Hosting, Cloudflare, security plugin, backups, 2FA, updates β€” all doable via UI. Items needing dev: custom CSP, server config, API security, custom code review.

What should I do if my site is hacked right now?

  1. Put site in maintenance mode (block all traffic)
  2. Change all passwords (hosting, CMS, database, FTP, email)
  3. Scan with multiple tools (Wordfence, Sucuri SiteCheck, MalCare)
  4. Restore from clean backup (pre-hack date)
  5. Update everything (core, plugins, PHP)
  6. Re-scan. Verify clean. Remove maintenance mode.
  7. Post-incident: audit how they got in; close the gap.

Is a free SSL certificate (Let’s Encrypt) enough?

Yes, for encryption. Paid certificates add: warranty, organization validation (OV/EV), support, longer validity. For most small businesses, Let’s Encrypt + auto-renewal is sufficient.

How do I know if my backups actually work?

Test restore to staging quarterly. Verify: site loads, admin works, content intact, forms submit, no malware. Document time-to-restore. If > 30 min, improve process.


Final recommendation: security is a habit, not a project

Daily:    Auto-updates, scans, backups, monitoring alerts
Weekly:   Plugin/theme updates, log review, backup verify
Monthly:  User audit, SSL check, WAF log review
Quarterly: Full restore test, header audit, incident drill, penetration scan
Annually:  Professional audit, compliance review, disaster recovery test

The businesses that get hacked are the ones that β€œset and forget.”


Need a security audit or ongoing maintenance? Contact TheWebPal for a complete website security assessment, hardening implementation, and monthly maintenance plans. We’ll lock down your site so you can focus on your business.