WordPress security isn’t a plugin problem.

Security plugins solve the visible problems. The dangerous ones are architectural — and a hardening plugin won't fix them.

Most WordPress sites have a security plugin installed. Most still get hacked. The disconnect is structural: real WordPress security hardening starts at the level a plugin can't reach. Here's what production-grade security looks like, layer by layer.

Most WordPress sites have a security plugin installed. Most WordPress sites still get hacked. The disconnect is structural: security plugins solve the visible, scriptable problems — known CVEs, brute-force login attempts, suspicious files. The dangerous problems are architectural — and a hardening plugin won’t fix them. Real WordPress security hardening starts at the level a plugin can’t reach: file permissions, server configuration, audit logging, surface reduction. The plugin is the floor. The real work is the architecture.

Why security plugins create a false sense of safety.

Security plugins are useful. They block automated attacks, flag known-malicious files, enforce basic configuration. The problem is what they don’t do:

  • They don’t audit your server configuration.
  • They don’t enforce file permissions at the OS level.
  • They don’t manage your backup integrity.
  • They only reduce surface area at the application layer, meaning a malicious request to XML-RPC still forces the server to load PHP and WordPress core before the plugin can block it, eating server resources and leaving an exploitation window.
  • They don’t audit the plugins you’ve installed for transitive vulnerabilities.
  • They don’t catch the architectural mistakes that make breaches possible in the first place.

What they do, very well, is provide a green checkmark in the WordPress admin that says “you’re protected.” That checkmark is the most expensive part. It convinces leadership that security is handled. It defers the architectural work. And it leaves the real attack surface exactly where it was. Genuine WordPress security hardening works at the layers below the plugin.

The four layers of real WordPress security.

Production WordPress security isn’t a single discipline; it’s four overlapping ones that have to be coordinated.

  1. Vulnerability scanning and patch automation. Continuous monitoring across plugins, themes, PHP, and OS dependencies for CVEs. Automated patch deployment with staging validation. Same-day response on critical-severity findings. A virtual patching layer for the cases where a plugin update isn’t yet available. This is what most security plugins gesture at and rarely deliver fully.
  2. WAF, rate limiting, and login hardening. A Web Application Firewall tuned to your actual traffic — not the default ruleset, which is either too permissive or breaks legitimate workflows. Rate limiting on login, REST API, and XML-RPC. Passkey, WebAuthn, or 2FA enforcement for editorial accounts. Real-time bot mitigation. The work is in the tuning, not the installation.
  3. Proactive AI-assisted code audits. LLM-driven review of plugin and theme code, surfacing the subtle vulnerabilities static scanners miss — particularly in custom code, where most static-scanner rules don’t apply. Adversarial prompt testing on any AI-integrated surfaces. Dependency-graph analysis for transitive risk. Human verification of every finding so you’re acting on real signal, not hallucinated alerts.
  4. Server and site hardening. File-permission baselines and immutable deployment where supported. Audit logging at the WAF, application, and database layers. Unused WordPress surfaces locked down — XML-RPC, REST exposure, in-admin file editing. Encrypted backups stored offsite, with verified restore paths. This is the layer security plugins cannot reach.

A serious WordPress security posture requires all four. Most production sites have one and a half.

The hardening work that isn’t in any plugin.

A non-exhaustive list of things you can’t buy as a plugin:

  • File permissions. Set correctly, they prevent an exploited PHP process from writing to the theme directory. Most WordPress sites have file permissions inherited from the original FTP upload, which is often wrong by an order of magnitude.
  • Immutable deployments. When code is deployed from a Git repository and the filesystem is read-only at runtime, an exploited plugin can’t write malware to disk. This is server-level configuration, not plugin configuration.
  • Audit logging across layers. WordPress logs what it can see; the WAF logs what the WAF saw; the database logs what was queried. Correlating these is incident-response work that no plugin packages.
  • Surface reduction. Surface reduction at the edge. Yes, security plugins have toggles to disable XML-RPC or the file editor. But relying on a PHP plugin to block an XML-RPC DDoS attack means your server is still processing thousands of PHP requests. Real surface reduction blocks these at the web server (Nginx/Apache) or edge WAF, before WordPress even boots.
  • Backup integrity. Backups are useless if you’ve never restored from them. Verified restore paths are operational work, not plugin work.

The pattern is consistent: the work that actually moves your security posture lives outside the plugin ecosystem.

Incident response — what you need before you need it.

Most organizations don’t think about incident response until they have an incident. By then, it’s too late to build the playbook calmly.

A minimum viable incident-response posture for WordPress includes:

  • A documented escalation path (who calls whom, in what order, with what authority to act)
  • A communication plan (what gets said to customers, employees, regulators, and when)
  • A backup-restore drill that’s been actually performed in the last 90 days
  • A forensic-snapshot procedure so you can investigate without destroying evidence
  • A reasonable hypothesis about your most likely attack vectors, so you know where to look first
  • Pre-arranged access to a security responder (in-house or contracted) who knows WordPress specifically

The first time you test these should not be at 11 p.m. on a Friday with the marketing team panicking and customer support overwhelmed.

When you actually need a WAF (and when the plugin one isn’t enough).

WAF plugins exist. Some of them are reasonably effective at blocking commodity attacks. Their limitations:

  • They run inside PHP, after WordPress has bootstrapped. By the time they evaluate a request, half the work is already done.
  • They can be bypassed by exploits that disable them (most plugin-based WAFs run as plugins and can be silenced by a sufficiently capable attacker).
  • They share resources with the application they’re protecting, so under attack they degrade the very performance they’re supposed to protect.

A true WAF runs upstream — at the CDN or edge, before requests reach the origin. Cloudflare, AWS WAF, Sucuri’s network-level offering, similar. It can block attacks before they touch your server, doesn’t share resources with WordPress, and survives even if WordPress is compromised. For sites with real security stakes, the plugin WAF is a starting point, not an endpoint.

The questions to ask your team — or your vendor — this week.

If you want a quick assessment of your actual WordPress security posture, ask the following:

  1. When was the last time we restored from a backup, end-to-end, to verify it works?
  2. What’s our patch cadence on critical CVEs — measured in hours or days, not “as soon as possible”?
  3. Who’s on call if the site is actively under attack at 2 a.m. on a Sunday?
  4. Is the file system read-only at runtime, or can an exploited plugin write to it?
  5. Do we have audit logs at the WAF, application, and database layers — and can we correlate them?
  6. What would the first hour of an incident actually look like, step by step?

If the honest answers are “we don’t know” or “I’d have to check,” you have hardening work to do. None of it is glamorous. All of it is what real WordPress security looks like.

Frequently asked questions.

What’s the difference between a security plugin and security hardening?

A security plugin is a tool installed inside WordPress that runs scans, blocks some attacks, and manages a handful of settings. Security hardening is the architectural work of reducing your attack surface at every layer — file permissions, server configuration, network defenses, audit logging, backup integrity — that a plugin cannot reach. Plugins are useful as part of a broader posture; they’re insufficient as the whole posture.

How often should WordPress security be audited?

For most production sites: a deep audit annually, with continuous monitoring in between. For sites with regulatory exposure (healthcare, finance, education, government-adjacent), quarterly audits with documented findings are usually the right cadence. The audit isn’t the work; the work is the remediation that follows.

Can WordPress be as secure as a static site?

In practice, yes — though the work to get there is real. A WordPress site with a strict hardening posture (locked file permissions, surface reduction, network-level WAF, audit logging, verified backups, patch automation) has a security profile comparable to a well-managed static site. The difference is in the operational discipline required to maintain that posture, which most WordPress installs don’t have by default.

What should I do first if my WordPress site is compromised?

Take it offline if you can — a maintenance page is better than active malware serving to your customers. Take a forensic snapshot of the current filesystem and database before changing anything. Identify the entry vector (which plugin, which credential, which file) before cleaning up; otherwise the attacker re-enters within hours. Restore from a verified pre-incident backup, then patch the entry vector before bringing the site back online. If you don’t have someone with WordPress-specific incident-response experience on hand, get one before you take any other action.

Let's talk about what you're building

No proposals. No pitch decks. Just a conversation about your project and whether I'm the right fit to build it.

Start a Conversation