{"id":19408,"date":"2026-06-03T09:51:54","date_gmt":"2026-06-03T08:51:54","guid":{"rendered":"https:\/\/www.20i.com\/blog\/?p=19408"},"modified":"2026-06-03T09:51:56","modified_gmt":"2026-06-03T08:51:56","slug":"the-wordpress-security-gap-hardly-anyone-talks-about","status":"publish","type":"post","link":"https:\/\/www.20i.com\/blog\/the-wordpress-security-gap-hardly-anyone-talks-about\/","title":{"rendered":"The WordPress security gap hardly anyone talks about\u00a0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Most WordPress security advice revolves around WAFs, login page obfuscation and security plugins. Meanwhile, a significant risk sits quietly in the Users tab, and most developers never think to look.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When you take over a WordPress site for a new client, a user audit should be the first thing on your list.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do it on any takeover and\u00a0you&#8217;ll\u00a0start to notice a pattern\u2026\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Admin accounts belonging to people who no longer work there.\u00a0\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A dev@ account with a password nobody&#8217;s touched since 2019.\u00a0\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A plugin author&#8217;s support account that was never removed after they fixed something a couple of years ago.\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A\u00a0plain subscriber who somehow ended up with an Administrator role that nobody can explain.\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Former employees\u00a0and\u00a0contractors who fixed one thing and disappeared.\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Third-party authors who were given temporary access and never asked to leave.\u00a0\u00a0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The site moved on. The accounts&nbsp;didn&#8217;t.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Why this goes unnoticed<\/strong>&nbsp;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">User hygiene&nbsp;doesn&#8217;t&nbsp;make it onto most security checklists because&nbsp;it&#8217;s&nbsp;not a technical vulnerability.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s&nbsp;no CVE for &#8220;ex-employee still has the keys.&#8221; No scanner flags it. No plugin&nbsp;monitors&nbsp;it by default.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It just requires someone to sit down, look at the list and ask: does this person still work here?&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The answer, more often than&nbsp;you&#8217;d&nbsp;expect, is no.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or nobody can remember, which amounts to the same thing.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Security hardening guides have trained developers to think about perimeter defences. But a dormant account with a weak password and full admin rights skips straight past all of that.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A 30-minute fix that catches more than most hardening checklists<\/strong>&nbsp;<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Export the user list and go through it with the client<\/strong>&nbsp;<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Sort by role. Ask the client to put a name to every admin and editor. Anyone they&nbsp;can&#8217;t&nbsp;identify&nbsp;gets demoted to subscriber, not&nbsp;deleted. You want the audit trail intact.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Force a password reset on everyone who\u00a0remains<\/strong>\u00a0<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Even accounts the client can vouch for. Password hygiene degrades over time and a clean reset at handover sets a clear baseline from day one.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Kill all active sessions<\/strong>\u00a0<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress lets you invalidate all existing sessions from the user profile screen. Do it. Anyone who was logged in and&nbsp;shouldn&#8217;t&nbsp;be is now out.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Set up login logging<\/strong>\u00a0<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A basic activity logging plugin takes five minutes to configure and gives you a clear record of&nbsp;who&#8217;s&nbsp;accessing the site going forward. It makes every future audit much quicker.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No specialist tools, no complex configuration. Just a clear-eyed look at who&nbsp;actually has&nbsp;access to the site&nbsp;you&#8217;ve&nbsp;been trusted to look after.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The underlying problem<\/strong>\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress makes it genuinely easy to grant access and&nbsp;easy to forget&nbsp;you&#8217;ve&nbsp;done it.&nbsp;There&#8217;s&nbsp;no expiry on user accounts, no nudge to review permissions, no warning when a role&nbsp;hasn&#8217;t&nbsp;been used in 18 months.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The responsibility falls entirely on whoever manages the site. In a handover situation, that means it often falls through the gap completely.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s&nbsp;also one of the easier conversations to have with a client. Former staff with full admin rights is a risk that lands&nbsp;immediately, even for people with no technical background. And fixing it costs less than an hour.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sort the users. Ask the questions. Change the passwords.&nbsp;It&#8217;s&nbsp;not glamorous, but&nbsp;it&#8217;s&nbsp;where the real exposure tends to live.&nbsp;<\/p>\n\n\n<div class='code-block code-block-4' style='margin: 8px 0; clear: both;'>\n<hr>\n<br \/><a href=\"https:\/\/www.20i.com\/wordpress-hosting\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/03\/Blog-Ad-WordPress-1200x625-1.png\" loading=\"lazy\" alt=\"Managed WordPress Hosting\"><\/a><\/div>\n\n","protected":false},"excerpt":{"rendered":"Most WordPress security advice revolves around WAFs, login page obfuscation and security plugins. Meanwhile, a significant risk sits&hellip;","protected":false},"author":13,"featured_media":19585,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","footnotes":""},"categories":[293],"tags":[],"class_list":["post-19408","post","type-post","status-publish","format-standard","has-post-thumbnail","category-wordpress","cs-entry"],"_links":{"self":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/19408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/comments?post=19408"}],"version-history":[{"count":3,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/19408\/revisions"}],"predecessor-version":[{"id":19411,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/19408\/revisions\/19411"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/media\/19585"}],"wp:attachment":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/media?parent=19408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/categories?post=19408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/tags?post=19408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}