WordPress security advice tends to swing between two extremes. Some of it ignores the issue entirely, and the rest treats your personal blog like it’s about to be hit by a nation-state hacking group. The reality sits comfortably in between. Most attacks on WordPress sites are automated, and they target a fairly small, well-known list of weaknesses. Defending against them takes a few hours of setup and a modest amount of ongoing maintenance, not a security career.

If you want the exhaustive, step-by-step hardening checklist covering every setting worth touching, we’ve already written that one. This post is different on purpose. It’s a shorter, decision-oriented look at what genuinely matters for a typical blog versus what’s more theater than substance, so you can spend your afternoon on the things that actually move the needle.

WordPress security checklist showing the essential steps from passwords to backups

What attackers actually do

Real-world WordPress attacks generally fall into a handful of predictable categories:

1. Brute-force login attempts

Bots try common username and password combinations against /wp-login.php around the clock. This is constant background noise on every WordPress site, targeted or not.

2. Exploiting outdated plugins or themes

A vulnerability gets published for a specific plugin. Bots then scan the web for sites still running that vulnerable version. If yours hasn’t updated, they exploit it automatically, without a human ever looking at your site directly.

3. SQL injection and cross-site scripting

These target outdated WordPress core installs or plugins carrying known, unpatched flaws.

4. Spam injection

Comment spam, hidden links quietly inserted into old posts, and redirect malware that hijacks traffic without an obvious visual sign anything is wrong.

5. Malware uploads via compromised plugins

Nulled or pirated plugins downloaded from sketchy third-party sources frequently contain malware that establishes persistent access for whoever planted it.

Defending against all five of these is well understood and genuinely tractable. None of it requires advanced security expertise, just consistent follow-through. If you want the ground-truth version of what WordPress itself recommends, the official WordPress.org hardening guide is the primary source most of this advice traces back to.

The essential checklist (the part that actually matters)

1. Strong passwords

Use a unique, randomly generated password for every WordPress login, stored in a password manager like 1Password or Bitwarden.

A few things to avoid entirely:

  • Reusing a password from anywhere else.
  • Anything based on a dictionary word, even with numbers tacked on.
  • The default “admin” username. Change it to something else specific to you.

2. Two-factor authentication

Enable 2FA on your admin account. A few solid free plugins handle this well:

  • Two Factor, maintained by contributors close to the official WordPress plugin team.
  • Wordfence Login Security.
  • WP 2FA.

It adds a 6-digit code from your phone after your password, and it’s what stops nearly all brute-force attempts cold, even when a password has already leaked somewhere else. We cover the full setup process in this two-factor authentication walkthrough if you haven’t done it yet.

3. Keep WordPress core, themes, and plugins updated

This is the single most important security practice on the entire list. Most successful WordPress attacks exploit known vulnerabilities sitting in outdated software that simply hadn’t been patched yet.

Auto-update minor plugin versions where possible, and manually approve major updates only after testing them on staging first. See this guide on updating WordPress safely for a process that won’t leave you with a broken site mid-update.

4. One security plugin, not five

A few solid options to choose between:

  • Wordfence, free and paid tiers, the most popular choice with a firewall, malware scanning, and login security built in.
  • Solid Security, formerly iThemes Security, with a solid feature set and a simpler interface than Wordfence.
  • Sucuri Security, free at the plugin level with a paid CDN service available separately, focused on malware scanning and hardening.
  • Your host’s built-in security, which many managed WordPress hosts already include and which may cover most of what a plugin would otherwise do.

Pick exactly one. Run it. Check its dashboard every so often rather than obsessively.

5. Automated, off-site backups

Daily backups stored somewhere other than your own server are non-negotiable. We’ve already covered the full setup in our automatic WordPress backups guide. When something does go wrong despite everything else, the practical fix for almost any attack is simply restoring from a clean backup.

6. SSL and HTTPS

Free through Let’s Encrypt on virtually every host at this point. It encrypts data in transit and is essential for any site with a login form, which describes every WordPress site by definition.

If your host doesn’t offer free SSL in 2026, that’s a strong signal to switch hosts.

7. Hide the WordPress version number

WordPress includes its version number in the page source by default. Attackers use this to target known vulnerabilities specific to that version.

Most security plugins remove or randomize this automatically, or you can add the following to your theme’s functions.php file:

remove_action('wp_head', 'wp_generator');

8. Limit login attempts

After 5 failed attempts, block the offending IP address for an hour. This stops brute-force attacks cold, without any real downside for legitimate users who occasionally mistype a password.

Most security plugins include this already. Wordfence’s Login Security module handles it well on its own.

9. Disable file editing in the admin dashboard

WordPress lets you edit theme and plugin code directly from the admin dashboard by default. If an attacker ever does get in, this is exactly how they install a persistent backdoor.

Add this line to wp-config.php to close it off:

define('DISALLOW_FILE_EDIT', true);

You can still edit files through SFTP as usual. Just not through the admin interface anymore.

A security plugin dashboard showing firewall, scan status, and recent blocked attacks

The “advanced” hardening worth considering, situationally

For higher-risk sites, or if you’d simply rather do more:

Change the admin URL

Instead of the default /wp-admin/, move it to something less predictable. This won’t stop a determined attacker, but it does cut down noise from automated bots substantially. The free WPS Hide Login plugin handles this well.

Disable XML-RPC

An older protocol used for certain integrations and a common attack vector. If you don’t use the Jetpack app or rely on pingbacks, disable it. Most security plugins offer this as a simple toggle.

Restrict admin access by IP address

If you only ever log in from a small, stable set of locations, such as home and an office, restrict admin access to those specific IPs via .htaccess or your security plugin. This only really works if your IPs stay stable, so it’s not practical for frequent travelers.

Custom database table prefix

WordPress defaults database tables to a wp_ prefix. Changing it to something random at install time, like x7r_, reduces the effectiveness of certain automated attack scripts. Set this during the initial install, since it’s genuinely difficult to change later on an existing site.

For the exhaustive version of this list, including twenty specific hardening steps with more technical depth, see our full WordPress security hardening checklist.

What not to install

  • Multiple security plugins running at once. They conflict with each other in ways that create new problems. Pick one.
  • “Premium security” plugins promising to make your site bulletproof. That claim is mostly marketing, not a real technical guarantee.
  • Plugins that scan and clean for malware constantly, around the clock. Heavy resource usage for limited real benefit. Backup-based recovery is a more reliable safety net than constant scanning.

What to do if your site gets hacked

If you discover signs of an attack, work through this in order:

  1. Don’t panic. Document what you’re seeing first, including screenshots and any relevant log entries.
  2. Take the site offline temporarily. Maintenance mode or a hosting-level pause both work.
  3. Restore from a clean backup taken from before the attack occurred.
  4. Update everything. WordPress core, every plugin, and every theme.
  5. Change all your passwords. WordPress, hosting, FTP, email, and database credentials, all of them.
  6. Run a malware scan. Wordfence offers free scanning that’s a reasonable starting point.
  7. Check Google Search Console for security warnings. If your site is flagged, request a review once cleanup is finished.

If you can’t clean it up yourself, paid services like Sucuri or Astra Security offer professional malware removal, typically running $200 to $500 depending on the scope of the compromise. Wordfence’s own quarterly threat intelligence report logs attack volume in the billions across its network every few months, which is a useful reminder that this activity is relentless and largely automated rather than personal.

The “I don’t have anything worth attacking” objection

Most WordPress attacks aren’t personally targeted at you at all. They’re automated bots looking for any vulnerable site they can use to do the following:

  • Send spam email at scale.
  • Host phishing pages that impersonate other brands.
  • Mine cryptocurrency using your server’s resources.
  • Add backlinks pointing to other sketchy sites, to manipulate search rankings.
  • Pivot from your site to attack other targets on the same server.

Your blog doesn’t have to be important to anyone in particular. It just has to be vulnerable. The defenses covered above stop automated bots specifically, which accounts for the overwhelming majority of the real threat any small blog actually faces. If your site runs on Aurora, note that clean, minimal theme code doesn’t by itself replace any of the steps above, but it does mean there’s less custom code sitting around as extra attack surface for something to go wrong in.

Enough security, without the paranoia

Most WordPress security is really automation defense: strong passwords, 2FA, updates, a security plugin, backups, and SSL. Skip the fortress-level hardening unless you’re actually being targeted specifically. Don’t run multiple security plugins. Update everything regularly. Trust your backups as the recovery plan. Most real “hacks” are preventable with an afternoon of setup once.