Skip to main content
WhatsApp me

Services

Websites
SEO & Google Ads
Branding
3D & interactive
Apps & AI
All services →

Find me on

Web Development Website Security

12 WordPress Security Steps for Business Websites (October 2026)

WordPress security for a business site, most urgent first: patched PHP, updates, 2FA, backups, a firewall and one plugin, with what each tool costs in US$.

Bakery owner in a Joo Chiat shophouse checks a sign-in code on her phone beside her WordPress security checklist

This week, a pair of bugs in PHP itself, nicknamed PHP2Shell, left every WordPress site on an unpatched server exposed, and no setting inside WordPress could fix it. That says a lot about WordPress security in general: the steps that matter most often sit outside the dashboard, and the order you do them in matters more than how many security plugins you install.

Below are the 12 steps I'd take on a Singapore business's WordPress site, most urgent first. The first four close the holes attackers actually use, and the rest limit the damage and keep watch. If you came for this week's news, my plain-English guide to the PHP2Shell vulnerability has a 24-hour plan and a message you can send your host.

I build WordPress sites when WordPress is the right tool, and I rebuild sites without it when it isn't, so I'll say where each tool helps and where it stops. Every price below is what the vendor listed on 23 October 2026.

Is WordPress secure?

WordPress is secure enough for a business website when it's kept up to date, because the core software is patched quickly and most break-ins come through plugins, themes and neglected servers rather than WordPress itself. Patchstack's State of WordPress Security in 2026 report counted 11,334 new vulnerabilities in the WordPress ecosystem in 2025, up 42% on 2024. Plugins accounted for 91% and themes for 9%. WordPress core had 6, all low priority.

Core isn't immune, though. On 17 July 2026, Searchlight Cyber disclosed wp2shell (a WordPress bug, unrelated to this week's PHP2Shell despite the similar name): two flaws in WordPress 6.9 and 7.0 that it said an anonymous visitor could chain to run code on "a stock install of WordPress with no plugins". WordPress shipped 7.0.2 and 6.9.5 and, as BleepingComputer reported, forced the update out through the auto-update system. That's the part WordPress does well. A site with background updates switched off waited for a human.

Two more Patchstack figures should change how you run a site. 46% of the vulnerabilities it tracked in 2025 had no fix from the developer by the time they were made public, and the weighted median time to a first exploit was 5 hours. So a plugin with a known hole can be attacked the same afternoon, and sometimes there's nothing to update to.

Then there's the layer underneath. PHP2Shell is a flaw in PHP, the language WordPress runs on, and Wiz Research, one of the teams that found it, showed it running code without a login on WordPress deployments, "even when their own application code is secure". That's why step 1 has nothing to do with WordPress settings.

1. Run a supported, patched PHP version

The first WordPress security step is making sure your server runs a PHP version that still gets security fixes and includes this week's patch: PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or a later release. The PHP project released those on 21 October 2026 to fix two flaws that, in its security advisory, "can allow unauthenticated remote code execution". Singapore's Cyber Security Agency issued its own alert the same day, summed up in two words: "Patch immediately."

Older branches are the problem. PHP 8.1 and older got no release from the PHP project. Its security team published minimal source backports for 7.4, 8.0 and 8.1 for people who compile PHP themselves, some Linux distributions and paid support vendors ship their own, and PHP 7.3 and older got nothing. WordPress.org's usage figures on 23 October showed about 36% of WordPress sites on PHP 8.1 or older, and almost 24% on PHP 8.2, which loses security support on 31 December 2026.

To see your version, go to Tools, then Site Health, then the Info tab, and open Server. Read it as the branch, not the patch. Site Health only checks the branch: on 23 October it still rated an unpatched PHP 8.3.20 as recommended. The number can mislead the other way too, because patched builds from Linux vendors keep their old numbers. Ubuntu 22.04's fixed PHP still reports 8.1.2, and CloudLinux's patched alt-php 8.5 reports 8.5.11-5. The definitive answer is your host's or vendor's changelog, or a written reply from your host. My guide on how to check your website's PHP version covers the other ways to find it, and if you can't get a straight answer, the free check further down is there for exactly this.

WordPress itself recommends PHP 8.3 or greater. On shared hosting, the host installs PHP patches and your job is to keep the site on a supported branch. On a VPS or cloud server, someone has to install the update and restart PHP, and on a lot of small business servers that someone was never named. My guide to updating PHP in WordPress without breaking the site covers the safe order: backup, staging copy, update, test, then switch the live site.

2. Keep WordPress core updated and leave auto-updates on

Keeping WordPress core updated means running the current release, 7.1.3 on 23 October 2026, and leaving automatic background updates switched on so security releases install without waiting for you. WordPress has applied minor and security releases automatically since version 3.7, according to its upgrade documentation.

Two habits quietly break that. A developer switches automatic updates off in wp-config.php to avoid surprises, then moves on. Or a site sits two major versions behind because the theme or page builder "isn't ready" for the new one. wp2shell showed why the first habit matters: the fix reached every site that accepted automatic updates and skipped the ones that didn't.

Test major versions (7.0 to 7.1) on a staging copy first if the site runs a shop, bookings or a heavily customised theme. Point releases like 7.1.x are mostly bug and security fixes. Let them install.

3. Update plugins and themes within days

WordPress plugins and themes should be updated within a few days of any security release, because they accounted for practically all of the 11,334 WordPress vulnerabilities Patchstack logged in 2025, and attackers move within hours.

Since WordPress 5.5 you can turn auto-updates on plugin by plugin from the Plugins screen. I switch them on for small, well-kept plugins such as a contact form, an SEO plugin or a cache plugin. I leave them off for the parts that can take a business offline: WooCommerce and its payment add-ons, page builders and anything custom. Those get updated on a staging copy first, inside the week.

Paid plugins and themes are the usual blind spot. A premium theme bought in 2019 usually stops updating when its licence lapses, and WordPress barely mentions it. Check that every paid plugin and theme still has an active licence, or plan to replace it.

4. Delete unused plugins and replace abandoned ones

Delete every plugin and theme you aren't using, and replace any plugin that hasn't been updated in about a year, because unused and abandoned code still sits on your server where an attacker can reach it. WordPress's own hardening guide says it plainly: "if you are not using a specific plugin, delete it from the system."

Deactivating isn't enough. A deactivated plugin's files stay on the server, and some plugin files can be requested directly by URL whether WordPress has the plugin switched on or not. Keep one current default theme as a fallback and delete the other themes you don't use.

To spot an abandoned plugin, open its page on WordPress.org and look for:

  • a banner saying it "hasn't been tested with the latest 3 major releases of WordPress"
  • a notice that the plugin has been closed and is no longer available to download, which sometimes follows an unfixed security report
  • no update in 12 months or more, and support threads nobody answers
  • a slider or page builder your developer added years ago that now blocks a PHP upgrade

If a plugin's developer has walked away, every future hole in it stays open. Swap it for a maintained one, or drop the feature.

5. Turn on two-factor authentication for every admin

Two-factor authentication (2FA) means a stolen or guessed password isn't enough to log in, and it should be on for every account that can install plugins or edit pages. WordPress doesn't ship with 2FA, but adding it costs nothing.

  • Two Factor, a free plugin maintained by WordPress contributors with 100,000+ active installs, supports authenticator apps, email codes and backup codes.
  • Wordfence and Kadence Security both include 2FA in their free versions. If you already run one of them, use its 2FA rather than adding another plugin.

Use an authenticator app over email codes where you can. An emailed code only helps if the inbox is better protected than the website, and for plenty of small businesses the shared office Gmail isn't.

6. Give everyone their own login with the lowest role that works

Everyone who touches the site should have their own named account with the lowest WordPress role that lets them do their job, and anyone who leaves should be removed the same week. WordPress has five standard roles: Administrator, Editor, Author, Contributor and Subscriber. One or two people need Administrator. Most need Editor or less.

A common setup on Singapore SME sites: one shared "admin" login created by whoever built the site in 2019, still active, its password known to three former staff and a freelancer nobody can name. Delete it. Create named accounts, make your marketing person an Editor, and keep Administrator for the owner and whoever maintains the site.

Open Users in the dashboard now and sort by role. An Administrator account you don't recognise is one of the clearest signs a site has already been broken into.

7. Keep backups off the server and test a restore

A useful WordPress backup is stored away from your web server, goes back several weeks, and has been restored at least once to prove it works. Backups kept on the same server or hosting account can be deleted or infected along with the site.

Your host's backups are a good start, so find out how many days they keep and whether you can restore one yourself. Then keep your own copy somewhere else. UpdraftPlus in its free version can send scheduled backups to Dropbox, Google Drive or Amazon S3. Keep at least 30 days, because a hack is often noticed weeks after it happened, and last night's backup may already contain the malware.

Once a quarter, restore a backup onto a staging copy and click around. An untested backup is a hope. If your site stores contact form entries or orders, those backups hold personal data under Singapore's PDPA, so keep them in a business account with 2FA on, not someone's personal Dropbox.

8. Put a cloud firewall (WAF) in front of the site

A cloud web application firewall (WAF) filters attack traffic before it reaches your server, which is why it was one of the few layers that could act on PHP2Shell before PHP did. Cloudflare says that from 03:02 UTC on 21 October, about 9 hours before public disclosure, customers on its free or paid WAF were protected by default, and Free plan users didn't have to do anything. Sucuri says it added virtual patching rules for known PHP2Shell attack paths to its firewall.

Both vendors still tell you to patch PHP. Cloudflare says request data alone doesn't always tell an exploit apart from normal traffic, and it saw attackers changing their payloads to get past its rules. CISA's alert of 21 October says a WAF "may provide some protection until systems are updated or patched". Sucuri adds a point most guides miss: a firewall only helps if attackers can't reach your server directly, so the server should accept web traffic only from the firewall.

Cloudflare's Free plan includes its free managed rules; on paid plans, check that the Cloudflare Managed Ruleset is deployed and set to block. Pro is US$20 a month billed yearly (US$25 billed monthly) and Business US$200 a month billed yearly. Sucuri's firewall starts at US$9.99 a month. My guide to whether a small business needs a web application firewall walks through the choice.

9. Install one security plugin and know where it stops

One well-maintained WordPress security plugin adds login protection, malware scanning and alerts about vulnerable plugins, but it runs inside PHP, so it can't be your defence against a flaw in PHP itself. Pick one and set it up properly. Two security plugins on one site tend to fight each other.

  • Wordfence (5 million+ active installs): firewall, malware scanner and 2FA in the free version, which gets new firewall rules and malware signatures 30 days after paying customers. Premium is US$149 a year per site.
  • Kadence Security, sold as Solid Security until recently and iThemes Security before that: free 2FA, brute-force protection and a vulnerability scan four times a day. Its paid features, including Patchstack virtual patching, now come inside Liquid Web's Kadence bundles rather than as a standalone plugin.
  • Patchstack: free alerts about vulnerable plugins for up to 3 sites. Its protection, which blocks known plugin exploits before you've updated, starts at US$5 a month per site.

Now the PHP2Shell point, because it's easy to get wrong. A security plugin is PHP code that WordPress loads. PHP's advisory says the demonstrated mod_php exploit can trigger "before any application code runs": before WordPress, and before any plugin, including a firewall plugin set up to load ahead of WordPress. Sansec, which sells security for online stores, says the same about its own Shield product: the attack paths "run inside PHP, before your store code and before Sansec Shield". Keep your security plugin. Just don't read its green dashboard as proof that the server underneath is patched.

10. Switch off the settings attackers rely on

A handful of WordPress settings make a stolen login far more damaging, and changing them takes about 15 minutes.

  • Turn off the file editor. Adding define( 'DISALLOW_FILE_EDIT', true ); to wp-config.php stops anyone editing plugin and theme code from the dashboard. WordPress says this "might stop some attacks" and won't stop malicious uploads, so treat it as one layer.
  • Limit login attempts. Your security plugin does this. Check it's actually switched on.
  • Turn off XML-RPC if nothing uses it. It's an old remote-publishing interface that attackers like for password guessing. Jetpack and some mobile apps need it, so check before you block it.
  • Force HTTPS everywhere, including the admin and login pages.
  • Tighten file permissions: 644 for files and 755 for folders is the usual starting point, with wp-config.php stricter still.

11. Choose a host that patches the server for you

The right host for a business WordPress site patches PHP and the operating system for you, tells you when it has, and keeps backups you can restore yourself. PHP2Shell split hosting into two groups this week.

On shared or managed hosting, the host updates PHP. SiteGround, which has a Singapore data centre, says it rolled out server-level mitigations after PHP's advance notice and applied the fixes across all its servers on 21 October, and that its customers need do nothing. Other hosts may well have done the same, so ask rather than assume. If you're with a local host like Vodien or Exabytes, one support ticket will do it: has the server my site runs on been updated to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or a patched backport, and when?

On an unmanaged VPS or cloud server, nobody patches PHP unless somebody is paid to. These are often the sites set up cheaply years ago and never touched since. How urgent is it? Sources disagree. CISA told organisations that can't patch, or still run PHP 8.1 or older, to take PHP systems offline until they can. Sansec said on 22 October that the public exploits "do not work against a default PHP installation" and that stores don't need to go offline. Both say update PHP, which is the part that matters.

12. Check your site from the outside every month

A monthly outside check catches the problems you'd otherwise hear about from a customer: malware injected into pages, a Google "dangerous site" warning, an expired certificate or missing security headers. Free scanners do this in a few minutes, and Google Search Console emails you if Google finds hacked content on your site.

Know their limit. A scanner on the internet can't reliably see which PHP build your server runs, so a clean scan doesn't mean you're patched. My roundup of free website security check tools explains what each one can and can't see.

Signs it has already gone wrong: mobile visitors redirected to gambling or pharmacy sites, strange pages showing up in Google under your domain, admin users you didn't create, or your host suspending the account. If you see any of them, start with what to do in the first 24 hours after a WordPress hack. In Singapore you can also report an incident to SingCERT through CSA's incident reporting page.

What do WordPress security tools cost?

WordPress security tools can cost nothing for a small business site if you use the free versions of Cloudflare, one security plugin and a backup plugin, and paid tiers start at about US$5 a month per site. These are the prices each vendor listed on 23 October 2026, in US dollars.

ToolWhat it doesFree versionPaid (US$)
CloudflareCloud WAF and CDN in front of the siteYes, with free managed rules (PHP2Shell rules added automatically)Pro US$20/month billed yearly; Business US$200/month billed yearly
SucuriCloud WAF, malware scanning and clean-upsSiteCheck remote scanner and a free pluginFirewall from US$9.99/month; Basic Platform with clean-ups US$229/year
WordfencePlugin firewall, malware scan, 2FAYes, with new rules and signatures 30 days latePremium US$149/year; Care US$590/year; Response US$1,250/year
Kadence Security (formerly Solid Security)2FA, brute-force protection, vulnerability scansYesOnly inside Liquid Web's Kadence bundles
PatchstackVulnerability alerts and virtual patches for pluginsAlerts for up to 3 sitesFrom US$5/month per site

The bigger cost is time. A free plugin that emails warnings to an inbox nobody opens protects nothing.

Who should look after WordPress security for a small business?

WordPress security works best when one named person or provider owns it, checks updates every week and knows who to call when the host emails about PHP. If that's you, the 12 steps above are the whole job. If it isn't, this is how I work with business owners, starting with a check that costs nothing.

  • A free PHP check: send me your web address and I'll check which PHP version it runs, what it's built on and how old its theme and plugins are, and tell you what I find. If your host has already patched it, I'll say so, and you won't need me.
  • The fix: if it does need work, you get a fixed price in writing before I start, covering the PHP update and anything it breaks, from SGD 850.
  • Upkeep: a content retainer at SGD 550 a month covers core, plugin, backup and security work plus 5 hours of changes, month to month (details on my website maintenance page).
  • Or a rebuild, quoted next to the fix so you can compare: Starter from SGD 2,535, the One Week Website at SGD 3,545, or Growth from SGD 7,585 with a CMS you edit yourself. The next section covers when that's the better buy.

When does it make sense to stop patching WordPress?

It makes sense to stop patching WordPress when the site is mostly brochure pages, nobody edits it every week, and it's stuck on old PHP or abandoned plugins, because a statically built site has no PHP running on the server for a bug like PHP2Shell to reach. terris.sg is built that way, with Astro, and served as plain files from a CDN.

For MET Interior, I moved a 176-page site off WordPress and its page builder onto Astro, statically rendered: 75 filterable project pages, 12 BTO landing pages, a renovation cost calculator and a guide library, with the old URLs mapped across. Every plugin their marketing needed had been adding page weight.

A static site still has things to protect: the domain registrar and DNS accounts, the hosting or GitHub account, form endpoints and any serverless functions, third-party scripts, and the npm packages it's built from. Each needs 2FA and care. What it doesn't have is a PHP runtime, a database or a public WordPress login. The prices are in the list above, and the three rebuild packages are compared here.

Stay on WordPress if you run WooCommerce, memberships or a team that edits pages daily. A well-kept WordPress site is a sound choice for those, and patching is the right answer.

What is the best free WordPress security plugin?

Wordfence is the most widely used free WordPress security plugin, with over 5 million active installs, a firewall, a malware scanner and free 2FA, though free users get new firewall rules and malware signatures 30 days after paying customers. Kadence Security, formerly Solid Security, is a lighter free option focused on logins and vulnerability scans. Run one of them, not both.

Can Wordfence protect a site from PHP2Shell?

Wordfence can't be relied on to protect a site from PHP2Shell, because it runs as PHP code and PHP's advisory describes a mod_php exploit that fires before any application code runs. The fix is a patched PHP build on the server: 8.5.12, 8.4.27, 8.3.36, 8.2.35 or a vendor backport. A cloud WAF such as Cloudflare or Sucuri can block known attack patterns while you get there.

How often should WordPress plugins be updated?

WordPress plugins should be checked at least once a week and security updates applied within a few days, because Patchstack put the weighted median time to a first exploit at 5 hours in 2025. Turn on auto-updates for small, well-maintained plugins, and test WooCommerce, booking and page-builder updates on a staging copy before they go live.

If you do three things this week, make them these: confirm your server runs a patched PHP build, delete the plugins you don't use, and switch on 2FA for every admin. That closes the hole PHP2Shell opened and the two ways most WordPress sites actually get broken into.

The rest of this WordPress security checklist is upkeep: updates within days, backups you've restored, a firewall in front and a look from the outside every month. If you're not sure where your site stands, start with the free PHP check: you'll know which PHP it runs and what it would take to fix, before you spend anything.

Sources and references (28)
  1. php.net
  2. wiz.io › php2shell php rce
  3. patchstack.com › state of wordpress security in 2026
  4. slcyber.io › wp2shell pre authentication rce in wordpress core
  5. bleepingcomputer.com › wordpress core wp2shell rce flaws get public exploits patch now
  6. wordpress.org › stats
  7. wordpress.org › requirements
  8. developer.wordpress.org › upgrading
  9. wordpress.org › eckstine
  10. developer.wordpress.org › hardening
  11. wordpress.org › two factor
  12. wordpress.org › roles and capabilities
  13. wordpress.org › updraftplus
  14. blog.cloudflare.com › php vulnerabilities waf protection
  15. blog.sucuri.net › critical php security update two rce flaws cve 2026 109618 cve 2026 109619
  16. cisa.gov › critical vulnerabilities php require immediate patching
  17. cloudflare.com › plans
  18. sucuri.net › signup
  19. wordfence.com › pricing
  20. wordpress.org › better wp security
  21. liquidweb.com › add ons
  22. wordpress.org › patchstack
  23. docs.patchstack.com › does patchstack have a free version
  24. siteground.com › critical php vulnerabilities october 2026
  25. csa.gov.sg › al 2026 151
  26. csa.gov.sg › reporting
  27. sansec.io › php2shell
  28. php.net › supported versions
Back to top

Written by

Terris

Web designer in Singapore

I've built websites for Singapore businesses full-time since 2018, across 290+ projects. I write, design and build each one myself, then do its SEO and Google Ads. These articles are what I'd tell a client who asked.

570+ articles written

Message me about your website, your SEO or your ads

I build the website myself, then handle the SEO and the Google Ads after it goes live. Tell me what you need and I'll give you a straight answer and a price.

View the list now
Email me
I read every message myself