A Practical WordPress Hardening Checklist

A practical WordPress security checklist: updates, strong logins, 2FA, login limits, backups, file permissions, plugin hygiene and security headers explained.

Key takeaways

  • Outdated plugins are the most common way in, so update everything.
  • Use unique admin credentials, 2FA and login-attempt limits.
  • Keep backups off the server and test restoring them.
  • Delete unused plugins and themes instead of just deactivating them.

Why WordPress gets attacked

WordPress powers a large share of the web, so attackers automate scans for known weaknesses. Most compromises don’t involve exotic zero-days. They come from a handful of basics being skipped: old plugins, weak or reused admin passwords and missing backups.

The checklist

  1. Update everything. Core, theme and plugins. Enable automatic updates for minor core releases and for plugins you trust, and review the rest weekly.
  2. Vet plugins before installing. Check recent updates, active installs, reviews and support activity. Fewer, well-maintained plugins beat many abandoned ones.
  3. Remove, don’t just deactivate. Inactive code can still be exploited, so delete unused plugins and themes.
  4. Use strong, unique admin credentials. Avoid the username admin, and see the password security guide.
  5. Enable two-factor authentication for every administrator and editor.
  6. Limit login attempts and consider moving or protecting the default /wp-admin login, since bots constantly probe it.
  7. Use least privilege. Give people the lowest role they need, and remove accounts that are no longer used.
  8. Back up off the server. Keep at least one copy somewhere a compromise can’t reach, and test a restore occasionally.
  9. Serve over HTTPS everywhere and redirect HTTP to HTTPS.
  10. Lock down files. Add define('DISALLOW_FILE_EDIT', true); to wp-config.php so a stolen admin session can’t edit PHP from the dashboard, and use restrictive file permissions.
  11. Disable what you don’t use, such as XML-RPC on sites that don’t need it.
  12. Send security headers such as Content-Security-Policy, X-Frame-Options and X-Content-Type-Options.

Check your headers

The HTTP Header Analyzer on the Tools page helps confirm that a site is sending basic security headers. Test after every hosting or plugin change, because caching and security plugins can alter them.

If you think you’ve been hacked

  1. Put the site in maintenance mode and change all passwords, including hosting, database and FTP.
  2. Restore from a clean backup taken before the compromise, then update everything.
  3. Scan for unknown admin users and modified files, and remove them.
  4. Find how they got in, usually an outdated plugin, so it doesn’t happen again.

None of this requires a security background. It’s mostly discipline and a repeatable routine.

Frequently asked questions

Do I need a security plugin?

A reputable security plugin can add firewalling, scanning and login protection, but it doesn’t replace updates, backups and strong credentials.

How often should I back up?

Match the frequency to how often content changes: daily for active sites, weekly for rarely-updated ones. Always keep an off-server copy.

Is it safe to use free themes and plugins?

Many are excellent. Download from the official directory or trusted vendors, and avoid nulled (pirated) premium items, which often contain malware.

Should I hide /wp-admin?

Moving or protecting the login reduces bot noise, but it’s obscurity, not security. Strong passwords, 2FA and rate limiting do the real work.

Keep reading

Related topics on this site