pixelgravitas
Free Assessment

Home/Case Studies/SecureLite Security

Case study · Our own product

Building SecureLite: a WordPress security plugin that has to prove it works.

Short answer: SecureLite Security is the free WordPress security plugin we designed, built and published on WordPress.org. Getting there took 15 versions, one wrong first strategy, 529 bad reviews of other security plugins, a cloud service we deleted, a real hacked site, and six bugs we found in our own code. This is the whole story, including the parts that didn't go to plan.

Versions15From the first build in June to WordPress.org in October 2026.
Reviews read529One-to-three-star reviews of four security plugins.
Attack checks13Fired at the site itself, to prove each protection.
PriceFreeEvery feature, with no account and no telemetry.

At a glance

The project,
on one page.

SecureLite SecurityProject file
WhatA WordPress security plugin: firewall, malware and database scanning, login lockouts, two-factor and post-hack recoveryBuilt
The ideaA button that attacks your own site, harmlessly, and shows which protections actually heldShipped
Built byPixelGravitas: designed and built by Naveen KumarIn house
Size35 PHP files, about 13,100 lines, with 19 test files beside themMeasured
TimelineFirst working version 25 June 2026; live on WordPress.org 15 October 2026Under 4 months
WalkthroughSecureLite Install to First Scan (video), or watch it on the SecureLite pageVideo

The problem

A settings screen
isn't a security test.

We clean hacked WordPress sites, and look after them afterwards. Every security plugin we meet gives the owner the same thing: a page of switches, each one saying a protection is on. None of them answers the question an owner actually has, which is "if someone attacked my site right now, would this stop them?"

The gap between "switched on" and "working" is real. A firewall left in monitor mode logs attacks without blocking them. A host that runs PHP in the uploads folder makes upload protection beside the point. A proxy that hides visitors' real addresses makes every lockout hit the wrong person. On the settings screen, all three look exactly like protection.

So the brief was simple to say and hard to build: a security plugin that tests itself, on the real site, and reports honestly when a protection is off or failing.

Chapter 1 · June 2026

Our first pitch
was wrong.

The first working version was built on 25 June 2026: 17 PHP files, about 100 KB, with two-factor codes checked against the official test values in the standard (RFC 6238). The plan around it assumed gaps in the competition that weren't there.

What we assumedThat free two-factor login and free vulnerability scanning would set SecureLite apart, because the big plugins kept them for paying customers.
What we foundChecking one leading plugin's free version, feature by feature, showed two-factor login and vulnerability scanning were already free, alongside a brute-force network covering around a million sites.
What changedWe stopped trying to win on features everyone already gives away, and built around what nobody offered: proof that protections work, depth on the site itself, and recovery after a break-in.

Why this is in a case study: the same habit runs through our client work. We check the claim before we build on it, including our own claims, and we write down when we were wrong.

Chapter 2 · September 2026

What 529 bad reviews
taught us.

Before the first public release we read what site owners say when a security plugin lets them down: 529 one-to-three-star reviews of four dedicated WordPress security plugins on WordPress.org, written between 2013 and 2026. This is how often each problem came up.

Upsells, nags or features behind a paywall15% · 77 reviews
Broke the site (white screen, 500, fatal error)13% · 67 reviews
Left things behind after removal12% · 63 reviews
Locked people out of their own site9% · 49 reviews
Slowed the site down6% · 33 reviews
Cache or Cloudflare conflicts3% · 14 reviews
Too many emails1% · 5 reviews

Method: one-to-three-star WordPress.org reviews of four dedicated security plugins, collected 8 September 2026 (a multi-purpose plugin's 551 reviews were left out). Each problem counted by keyword across the review's title and text; one review can count towards several. Totals are shown in aggregate, never per plugin.

Each complaint, and what SecureLite does instead.

What went wrong for site ownersWhat SecureLite does insteadSince
Upsells, nags or features behind a paywallEvery feature free, and nothing in the plugin today will ever move behind a paywall.Launch
Broke the site (white screen, 500, fatal error)Firewall starts in monitor mode; every wp-config.php edit is checked to be valid PHP before it is saved; .htaccess is never written.0.2.10 · 0.2.12
Left things behind after removalDeactivating hands back what it added; uninstalling removes its tables, settings and jobs completely.0.2.7
Locked people out of their own siteThree ways back in; a known username can't be used to lock the owner out; two-factor won't switch on until it's proven.0.2.3 · 0.2.7 · 0.2.8
Slowed the site downRequest checks add well under a millisecond; scans are scheduled and never run during a page load.Launch
Cache or Cloudflare conflictsNo proxy in front of the site, and a Cloudflare preset so lockouts see real visitor addresses.0.2.8
Too many emailsOne daily summary and two kinds of urgent alert. Never one email per blocked request.0.2.4

Chapter 3 · 7 September 2026

The day we deleted
the cloud service.

The original design had two halves: a plugin on the site, and a SecureLite cloud service it could report to. By September the plugin half was strong. The cloud half wasn't. As built, the connection only ran one way: a connected site sent its security events out, and nothing useful came back.

That meant every site that connected would hand over data about its users and visitors, take on the privacy obligations that come with it, and get nothing in return. It would also have put a service that didn't really exist yet in front of WordPress.org's reviewers.

So on 7 September, in the last audit before submission, we removed it: the transport, its settings, the table it used and the scheduled job that fed it. SecureLite has run entirely on the site ever since. The only outbound request it makes today is to WordPress.org itself, for the official file checksums its malware scan compares against.

1Found

A web-reachable test tool

The attack test harness shipped inside the package and could be run from a browser. It was gated to the command line and excluded from the build.

2Found

A rate-limiter bypass

A forged cookie name was accepted as proof of login, which switched rate limiting off. It now validates the real login cookie.

3Decided

No cloud, no account

The cloud transport was removed, and the readme says plainly which outside services the plugin uses: only WordPress.org.

Chapter 4 · October 2026

Field-tested
on a real hack.

In October we cleaned up a WordPress site with a backdoor in three places: nine hidden PHP files, seven administrator accounts the owner never created, and a login token in the database. The plugin's first scan of that site looked for known malicious code. It found none of the nine files, because code wrapped in 15 layers of encoding has no fixed pattern to match.

What found them was a different question: not "does this file look bad?" but "is this file meant to be here?". WordPress.org publishes a fingerprint of every core file for every release. Comparing the site against it turned up all nine. On 8 October that comparison went into SecureLite's scanner, for every site that runs it. The same check clears library code inside WordPress.org plugins that a pattern scan wrongly flags, so a clean file is no longer reported as malware.

Pattern scan vs checksum scanSame hacked site
Pattern scanFlagged harmless plugin libraries as critical; found 0 of 9 web shellsMissed
Checksum scanEvery added or changed core file reported as critical: 9 of 9 foundFound
After cleanupAll 3,338 core files match WordPress 7.1.3, with nothing added to core foldersClean

Chapter 5 · Our own mistakes

Six bugs we found
in our own plugin.

A security plugin with a security bug is worse than no plugin. These are the serious ones we found in SecureLite, what they could have done, and how each was fixed. Five were fixed before the first public release; the sixth in the first update after it. Open any of them to read the detail.

0.2.2 Configuration backups could be read by anyone

The risk: Before editing wp-config.php, early versions saved a backup next to it in the site root, where a default server setup serves it as plain text. That is the file holding the database password.

The fix: Backups moved, then removed altogether in 0.2.10: SecureLite now edits wp-config.php in place, checks it, and restores from memory if anything goes wrong. Every copy left by earlier versions is deleted on update.

0.2.7 A stranger could lock the real administrator out

The risk: Anyone who knew an administrator's username could keep that account locked by sending wrong passwords, including against the real owner on mobile data, who then couldn't get in to fix it.

The fix: The username lock is now decided after the password is checked. A wrong password is refused as before; the correct one gets in and clears the lock. Guessing gains an attacker nothing.

0.2.8 A locked-out address could still sign in

The risk: WordPress's own password check replaced SecureLite's refusal, so a locked address saw the lockout message but could still log in with the right password, or keep guessing under another username.

The fix: A locked address is now refused for the whole lockout window, whatever the password or username, and Attack Simulation tests exactly this so it can't pass again.

0.2.8 A forged header could dodge the lockout

The risk: With proxy mode on, a forwarded IP header was believed from any connection, so an attacker could send a fake one and appear to be someone else.

The fix: Forwarded headers are only read from trusted proxies (a private network, Cloudflare's edge, or addresses you list), and read from the right, so the address a client claims for itself is never trusted.

0.2.10 Regenerating keys could take a site offline

The risk: A security key containing a dollar sign followed by a digit was written in a way that broke wp-config.php with a syntax error, which takes the whole site down.

The fix: Keys are written literally, and every wp-config.php change is checked to be valid PHP before it is saved. An edit that wouldn't parse is refused.

0.2.14 A two-factor code worked more than once

The risk: The same six digits could be reused for about a minute and a half after they were first accepted.

The fix: Each authenticator code now signs you in exactly once. Fixed in the first update after the WordPress.org release.

The pattern behind all six: each fix also became a check. Attack Simulation now tests the lockout from a fresh username at a locked address, and every wp-config.php change is parsed before it is saved, so the same mistake can't quietly come back.

Chapter 6 · The result

Thirteen attacks,
one honest report.

This is the idea the whole project was built around. One button fires thirteen harmless attacks at the site over its own connection, one at a time, and reports for each protection whether it blocked the attack, is switched off, or failed.

Attack Simulation in the WordPress admin: SQL injection, cross-site scripting, brute force, malicious uploads, PHP in uploads and exposed files, each tested on the live site.

How it got here

From first build
to WordPress.org.

  1. First working versionLogin lockouts, two-factor, file-integrity watch and a security score, plus a written blueprint mapping every feature to how WordPress sites actually get attacked.
  2. Strategy correctedA feature-by-feature check of a leading plugin's free tier showed our first pitch was wrong. The plan moved to proof, on-site depth and recovery.
  3. Pre-submission auditThree release blockers and a rate-limiter bypass found and fixed. The cloud service removed.
  4. 529 reviews readThe problems site owners report most shaped the releases that followed: lockout safety, clean removal, a quiet inbox.
  5. Hardened and renamedVersion 0.2.8 closed the lockout and proxy-header bugs, and Attack Simulation went live, one check at a time. The plugin took its final name, SecureLite Security.
  6. WordPress.org review fixesVersion 0.2.10: wp-config.php is never copied anywhere and every edit to it is checked before it is saved.
  7. Field-tested on a real hackVersion 0.2.11 compares every core file with WordPress.org's checksums, after the backdoor cleanup showed why.
  8. Live on WordPress.orgVersion 0.2.13 published, followed the same day by 0.2.14: two-factor by QR code, and single-use codes.

What it means for you

Why this matters
if you hire us.

We test, not assumeThe same rule that built Attack Simulation is how we check a client's site: prove the protection holds, don't trust the settings screen.Get a free website audit →
Cleanups feed the toolsWhat we learn removing malware goes straight into how we detect it, as the checksum scan did.WordPress malware removal →
We write down mistakesSix bugs, published with their fixes. You get the same honesty in every report we send about your site.Compare maintenance plans →
Naveen Kumar, founder and lead engineer of PixelGravitas

Naveen Kumar

Founder & lead engineer, PixelGravitas · Designs and builds SecureLite

I clean hacked WordPress sites and I build SecureLite, so what goes wrong on real sites becomes a check in the plugin. Every feature in it is free, and it will stay that way. More about SecureLite →

More case studies

See all →

Questions, answered

SecureLite case study:
common questions.

What is SecureLite Security?

A free WordPress security plugin built by PixelGravitas and listed on WordPress.org. It combines a firewall, malware and database scanning, login lockouts and two-factor authentication, and adds an attack simulation that tests whether each protection actually blocks an attack.

Why would a maintenance company build its own security plugin?

Because the plugins on the sites we clean report that they're protecting the site without showing whether they do. Building our own let us put proof (the attack simulation) and what we learn from real cleanups directly into the tool, for everyone, free.

Is SecureLite free?

Yes. Every feature is free, there is no account or API key, and nothing that is in the plugin today will ever move behind a paywall.

How were the 529 reviews analysed?

We collected one-to-three-star reviews of four dedicated WordPress security plugins from WordPress.org and counted how many mentioned each problem, by keyword, across the title and text. A review can count towards more than one problem. The totals are shown in aggregate, not per plugin, because the point was to learn what goes wrong for site owners, not to rank anyone.

Do your maintenance clients use SecureLite?

Not yet. It was published on WordPress.org in October 2026. We'll say so on our maintenance pages if and when it becomes part of how we look after client sites.

Can you clean a site that's already hacked?

Yes. A plugin can find and report what doesn't belong, but removing the malware and closing the way in is hands-on work. Our WordPress malware removal service does it for a fixed fee agreed before work starts.

Start here

Want your site checked the same way?

Send the URL. We'll look at it from the outside and tell you, in writing, what looks exposed and what to fix first. Free, and no follow-up sequence if you don't reply.

  • 1We check the live site for the signs you describe, from the outside.
  • 2You get written findings ranked by what to fix first.
  • 3You decide what happens next.

Free website assessment

Three fields on purpose. We reply within one business day, and we don't add you to a mailing list.

Get a free website assessment