A galvanized steel chain and padlock wound around the rusted iron bars of a window grille, with a pale door blurred behind.
Website security

WordPress Security Checklist

You already run a WordPress site, so skip the definitions. Here is the WordPress security checklist that keeps one out of trouble, and what to do about a neglected one.

Get WordPress Hosting Get help choosing

The WordPress security checklist starts with an inventory

Why WordPress gets attacked is covered on the website security page: it is common, and the risk arrives through the add-ons rather than the core. What follows is what to do about that, starting with knowing what the site runs.

Keep the list somewhere other than the site. For each plugin: the name, free or paid, where the licence key lives, when it was last updated, and which page stops working without it. Then the theme, whether a child theme sits on top, and every user account with a role and a person's name against it.

Two things usually surface: a plugin nobody can name a purpose for, and a paid plugin licensed to somebody who left, quietly no longer updating.

If a page builder made the layout, add three lines: who the builder and its add-ons are licensed to, whether the theme is the one it expects, and whether any template lives only in the builder's cloud library.

The attack surface, in the order it bites

The order is how often each one turns out to be the cause.

Where WordPress sites are compromised, most common cause first
Way in Why it sits here What closes it
Out-of-date plugins The most code, from the most authors, updated by the fewest owners. Update them, and delete the ones no page depends on.
Out-of-date themes Fewer, but a purchased theme often bundles plugins of its own. Keep the theme current, and update what it bundled.
Out-of-date core Lower than people expect. Core security updates apply themselves unless switched off. Leave automatic core security updates on.
Weak or reused passwords No code flaw needed. A password leaked elsewhere gets tried on your login. A unique password per service, and two-factor authentication.
Admin accounts nobody removed Old designers, former staff, a shared login. Valid keys no firewall questions. Review the user list, and remove leavers that week.

The top three rows say somebody did not press update; the last two, that somebody did not tidy the accounts. Neither is a product, which is why a site with a security plugin and no maintenance gets taken anyway.

Plugin discipline

Every plugin is a permanent dependency on somebody else's work. Fewer is safer, one per job beats two fighting over the same job, and the yearly question to ask of each is which page stops working without it.

Removing one without taking a page down

  • Find what depends on it first. Search the pages for its shortcode or its blocks, and check whether the theme calls it. Switch it off, walk the pages that earn money, then delete it.
  • Expect it to leave things behind. Deleting a plugin removes its files, but its settings, tables and scheduled jobs usually stay in the database, so a tidy plugin screen is not proof of a clean site.
  • Read the user list afterwards. Some plugins add an account or a custom role during setup and leave it behind.

Telling whether a plugin has been abandoned

Four things on its listing page tell you:

  • When it was last updated. Months is normal for something small and stable. Years is a warning.
  • The WordPress version it was tested with. Several releases behind means nobody is watching.
  • The support forum. Questions unanswered for months tell you more than the description does.
  • The changelog. Real fixes, or a version number frozen in place.

If two look wrong, choose something else. Replacing a plugin while the site is healthy is ordinary work; replacing one after it is exploited costs far more.

Updating promptly without breaking pages

Updating fast closes vulnerabilities while scanning for them ramps up. It also occasionally breaks a layout, a form or a checkout.

  1. Have a backup somebody has restored

    Not a copy that exists somewhere. That is its own subject, covered on website backups.

  2. Do it on a private copy if the site earns money

    The order to update in, and the pages to click through afterwards, are set out under staging on WordPress hosting.

  3. Deal with the plugin that will not update

    If one refuses, or breaks the page every time, it is the oldest thing on the site and will not improve. Replace it, or pay to have it fixed.

When an update stops halfway

A dropped connection can leave the site showing a scheduled maintenance message to everybody. WordPress writes a temporary file named .maintenance at the top level of the site while it works, so a run that never finished leaves the file there. Delete it over FTP and the site comes back.

Then find what the update was in the middle of. A plugin caught half replaced should be installed again from a clean copy, and if the site answers with a blank page, renaming its folder usually gets you back into the dashboard.

If nobody wants to own this, a managed WordPress hosting plan can take updating and staging off your desk. What is included varies by tier, so read the plan rather than the category name.

Accounts, roles and the people who left

Most sites hand out Administrator because it always works. It is also the role that lets a stolen password install anything.

WordPress roles, and who each one is actually for
Role What it can do Who should have it
Administrator Everything, including plugins, the theme and new administrators. The owner and whoever maintains the site.
Editor Publish and edit any page or post, including other people's. Whoever keeps the content current.
Author Write and publish their own posts only. Regular contributors to a blog.
Contributor Write drafts, but not publish them. Writers whose work someone reviews first.
Subscriber Manage their own profile only. Customers or members, if the site has that area.
  • Change somebody's role rather than opening a second account. Two accounts for one person is how a leaver keeps a way in.
  • Deleting a user asks what to do with their content. Attribute it to somebody still at the business, or their pages leave with the account.
  • Check the site's administration email too. It is where account and recovery notices go, and on an inherited site it is often whoever built it.
  • Look at the application passwords on each administrator. They let another program sign in without the login page, and changing that person's password does not revoke them.

Hardening worth doing, and hardening that is theatre

Hardening guides run to fifty items. Most of the value sits in a handful, and several popular ones do nothing an attacker notices.

Worth doing

  • Two-factor authentication on every administrator account.
  • Limiting failed logins, so guessing gets slow instead of endless.
  • Staying on a supported version of PHP, which your host controls.
  • Turning off the built-in file editor, so a stolen login cannot edit code.
  • HTTPS everywhere, with a valid SSL certificate.

Mostly theatre

  • Hiding the WordPress version number. Automated attacks try the exploit regardless.
  • Moving the login page, when it replaces two-factor rather than adds to it.
  • Renaming database table prefixes on an existing site, which risks more than it prevents.
  • Chasing a security plugin's score up to full marks.

If something on this side is already set up and causing no trouble, leave it alone.

The site somebody built years ago

Someone built it, it worked, they moved on, and nobody has logged in since. The instinct is to press update on everything. Do not.

  1. Get hold of the keys

    The hosting login, the domain account and an administrator account, held by you rather than by somebody you cannot reach. Then build the inventory described further up.

  2. Take a full copy off the server

    Files and database, kept somewhere other than the hosting account, because an update on a site this far behind can fail badly.

  3. Find out whether it is already compromised

    A site nobody has watched for years may have been taken long ago and left working. Establish that first, or your fresh backup preserves the infection.

  4. Put a name against it from now on

    You, a member of staff with it in their calendar, or a maintenance arrangement.

Sometimes a site is too far behind to update safely and rebuilding costs less than repairing it. Better to reach that deliberately than after a compromise. AldoMedia has maintained websites for Western New York businesses since 1999, and is an independent authorised reseller for these products rather than the platform behind them.

If that scan finds something, cleaning the site comes before updating it, and that is a separate service. Malware removal covers what it involves; the button goes to what it costs.

Secure Your Website Now Ask us to look at your site

WordPress security questions

Is WordPress less secure than other website software?

No. The core is maintained carefully and security releases come out quickly. What makes WordPress a target is how many sites run it, and how much add-on code from other authors runs on a typical one. The add-ons nobody updates are the weak point.

Should I turn on automatic WordPress updates?

For core security releases, yes, and they are usually on already. Automatic plugin updates suit a site with a working backup and someone who looks at it weekly. Without those, they break the site while nobody is watching.

How many security plugins does a WordPress site need?

One at most, and sometimes none. Two firewall or scanner plugins running together tend to conflict and bury the alerts that matter. If your hosting plan already includes scanning and a firewall, a plugin doing the same job adds duplication, not depth.

Is it enough to deactivate a plugin I no longer use?

No. A deactivated plugin still has its files on the server, and some vulnerabilities can be reached whether it is switched on or not. Deactivate it to check nothing breaks, then delete it. Those are also the plugins nobody updates.

Nobody has updated our WordPress site in three years. What should we do first?

Not press update. Take a full backup off the server, run a scan to find out whether the site is already compromised, and write down what it runs and who has access. A site that far behind sometimes breaks when it catches up, so have the copy in hand first.

Related guides and services

Managed WordPress Hosting

When updating and staging sit with the plan rather than with whoever remembers.

See what managed covers

Malware Removal

Already flagged, or serving pages you did not write? Start here.

Get a site cleaned

Back to the website security overview, what our support covers, or the other guides.

Hero photograph: cogdogblog, CC0, via Wikimedia Commons. Cropped.

Not sure what your WordPress site is running

Send us the address and we will tell you what state it is in, before anybody buys anything. Ring 716-771-2536 or use the contact form. If you would rather updating stopped being your problem, the managed hosting pricing is below.

Get WordPress Hosting Get help choosing