Features
Every module, in detail.
Silverback Login has eight coordinated modules that address specific credential-lifecycle failure modes. This page walks through each one: what it does, why it matters, and how it holds up when something else in your stack breaks.
Access control
Hide the login URL.
Every WordPress site ships with the login page at /wp-login.php and the admin
at /wp-admin/. Every bot on the internet knows this. A typical WordPress site
catches hundreds of automated login attempts per day just because those two paths are
predictable.
Silverback Login replaces both with a custom slug you choose (or one we generate). The
default generator combines two words from a curated list of neutral English nouns
(cedar-river, harbor-moss, aurora-falcon) giving
about 14,400 unique combinations. The plugin name never appears in the URL, so a scanner
can't fingerprint Silverback from the slug itself.
Anonymous visitors who hit the old /wp-login.php or /wp-admin/
URLs get a clean 404 (or a redirect to your homepage or a custom URL, your choice). The
plugin never rewrites WordPress core files — it intercepts at the request layer using
standard hooks, so deactivation restores the default behavior instantly.
A Regenerate button next to the slug field mints a fresh two-word slug via AJAX. You can keep clicking until you like one; the change isn't saved until you hit Save Changes. Any time the slug is set or updated, every administrator on the site gets an email with the new URL — no more losing the URL because you forgot to write it down.
Authentication
Email two-step verification.
A hidden URL cuts bot noise. It doesn't stop the real threat: someone who obtained a legitimate password (phishing, reused-elsewhere, dumped in a breach) trying to use it. For that you need a second factor.
Silverback Login sends a 6-digit code to the user's email after a correct password. The code is stored server-side as a hash, expires in 10 minutes, is rate-limited on resends, and can be attempted up to 5 times before the session is invalidated. Email as the default because every WordPress user already has an email address — no setup, no separate app to install.
A "trust this device for 30 days" checkbox on the verification form drops an
HMAC-signed cookie, so the same browser doesn't re-prompt for 30 days. The cookie is
bound per-user via wp_salt('auth'), revocable, and capped at 10 trusted
devices per user to prevent accumulation.
Code-request throttling
Email 2FA has a failure mode most plugins ignore: an attacker who has the password can submit it over and over, and every submission triggers a fresh code — and a fresh email to the account owner. The inbox fills up, and each new code is a new set of guesses. Silverback caps how many challenges a single IP address or a single account can start: five per 15 minutes, then a 30-minute cool-down. Past that, the login screen says "try again later" and nothing is sent. The per-account limit is the one that matters — an attacker rotating IPs still runs into it.
The limits inside a challenge are tight too: five wrong codes ends it, resends are capped at three and spaced 30 seconds apart, and a challenge expires 10 minutes after it was created no matter how many times it's poked.
No side doors
xmlrpc.php is the oldest brute-force channel in WordPress, and most
login plugins only guard the login form. Any account protected by Silverback 2FA
simply cannot authenticate with a password over XML-RPC, the REST API, or AJAX — those
channels get a clear error, not a code. Scripts and integrations that need API access
use WordPress Application Passwords, which are designed for exactly that and don't
pass through the 2FA gate.
Cloudflare-aware
If your site sits behind Cloudflare, the origin server only ever sees Cloudflare's edge addresses. A naive rate limiter would throttle every visitor who shares an edge. Silverback reads the real visitor IP from Cloudflare's header, so lockouts land on the attacker and nobody else. Not on Cloudflare? Nothing to configure — it falls back to the direct address.
Emergency exits
If outbound email breaks and you can't receive the code, add
define( 'SILVERBACK_DISABLE_2FA', true ); to wp-config.php.
2FA disengages until you remove the line. The throttle has its own switch,
SILVERBACK_DISABLE_THROTTLE, for the rare case a shared office IP trips
it. Documented up front because SMTP outages are the number-one lockout scenario for
any 2FA plugin.
Password lifecycle
Breach screening, reuse prevention, optional rotation.
Modern security guidance (NIST 800-63B) tells you the passwords themselves matter more than how often you rotate them. Silverback Login implements both the modern controls (breach screening, reuse prevention) and the traditional one (rotation) — so you can match either regime.
Breached-password screening (HIBP)
Every new password validation query runs against the Have I Been Pwned password database via the k-anonymity range API. The plugin SHA-1s the password locally, sends only the first 5 hash characters over the wire, and receives back a list of full-hash suffixes to compare against. The full password — and even its full hash — never leaves your server.
Always on. No setting. If the password has appeared in any known breach, the user is told to choose another. If HIBP is unreachable (rare, but happens), validation fails open — the password is allowed through. Blocking legitimate password resets because an external API had a bad afternoon isn't a security win.
Last-5 reuse prevention
The user's last five password hashes are kept in a per-user meta record and compared on every password change. If the new password matches any of the last five, it's rejected. Always on, no setting, local storage — never touches an external API, never stops working.
Forced rotation
Optional. Dropdown lets you pick 3, 6, 9, or 12 months. When a user's password reaches the interval, they're gated to the profile screen on their next admin page load and held there until they save a new password. The gate is O(1) — a single global timestamp check, no per-user loop, scales to any site size.
Account lifecycle
Inactive-account lock.
Forced rotation only affects users who come back to log in. It never touches the dormant accounts that just stopped visiting — the ones where a leaked credential would sit unnoticed for years. Silverback Login closes that gap with an optional inactive-account lock.
A daily WordPress cron scans users in batches of 500. Any non-administrator account
whose last login is older than your configured threshold (default 6 months) gets
flagged with a _silverback_locked meta record. Locked accounts see a
generic error message on login and cannot complete authentication.
Administrators are never auto-locked. When one or more accounts are locked in a scan run, every administrator gets a single batch summary email listing the affected users and unlock instructions. One email per cron run, not per user — so a site with 50 stale accounts doesn't blast every admin with 50 messages.
Emergency response
Force-all password reset, with optional session kill.
Under normal operation, forced rotation is enough. But for breach response — you got a disclosure notice, a credential leaked, an attacker was in the system — you need a bigger hammer.
One button under Settings → Silverback Login → Login tab: Force all users to change password on next login. Click it, confirm the dialog, and every user (including you, the admin who clicked) is gated to the profile screen at their next admin page load until they pick a new password. Backed by a single global timestamp — no per-user database walk, scales to any user count.
For a suspected active breach, there's a checkbox next to the button: Also
immediately end every active session. When ticked, the handler iterates every
user and destroys every active session token via WordPress's built-in
WP_Session_Tokens API. The clicking admin's current session is preserved
so they can complete their own password change. Browser tabs of every other signed-in
user lose their cookie at the next request.
Recovery
Multiple ways back in if things go wrong.
The biggest support risk for any login-security plugin is the site owner locking themselves out. We designed Silverback Login with a graduated recovery path so you always have at least one way back in.
- Email. The login URL is emailed to every administrator on activation and on every slug change. Search your inbox for "Login URL."
- Hosting panel. Plesk's WordPress Toolkit, WP Engine, Kinsta, Cloudways, SpinupWP, and most managed hosts have a one-click "Log in to WordPress" feature that bypasses the URL entirely using filesystem-level auth tokens.
- WP-CLI. If you have SSH access:
wp option get silverback_options --format=jsonand look for thelogin_slugfield. - Direct database.
phpMyAdmin→wp_options→ search forsilverback_options— the value is a serialized array containing your slug. - Emergency constants. Add
define( 'SILVERBACK_DISABLE_HIDE_LOGIN', true );towp-config.phpand defaultwp-login.phpaccess is restored until you remove the line.SILVERBACK_DISABLE_2FAandSILVERBACK_DISABLE_THROTTLEdo the same for the other two gates. One line in a file you already have SSH or FTP access to — no database surgery. - Rename the folder. Last resort — rename
/wp-content/plugins/silverback-login/via FTP or your hosting file manager. The plugin is disabled but your settings persist for when you rename it back.
Design philosophy
Correct by default, small settings surface.
Most security plugins bury critical behavior behind dozens of toggles nobody reads. Silverback Login has two settings screens. That's the whole admin UI.
Login screen: custom URL slug, redirect target, email 2FA toggle, per-role 2FA scope, force-all-users reset button.
Policy screen: forced password rotation interval, inactive account lock enable and threshold.
Breach screening, reuse prevention, trusted-device cookies, code-request throttling, batch admin notifications, force-reset gate — always on. Not toggleable. We picked the correct answer once and locked it in.
Built for fleets
One option key. Any number of sites.
A small settings surface has a side benefit: every setting lives in a single
silverback_options row, which means every setting is one WP-CLI command
away. If you manage a dozen client sites on one server, you don't click through a
dozen dashboards — you write a loop.
Turn on 2FA everywhere, read back every site's login URL, or confirm every site is on the current version, all from one shell. The docs have the exact commands. The plugin was built by an agency running exactly that setup, and the CLI path is the one we use ourselves.
It also plays well with what you already run. Wordfence, Defender, and the other suites keep doing firewall and malware duty; Silverback handles the credential layer. The only thing to switch off is their overlapping hide-login or 2FA module, so the two don't argue over the same request.
How we compare
Silverback Login vs the alternatives.
Two adjacent categories of WordPress security plugins exist: the hide-login specialists and the big all-in-one suites. Silverback Login fills the gap between them — deeper on credential lifecycle than the specialists, more focused than the suites.
| Feature | Silverback Login | WPS Hide Login | Wordfence / iThemes |
|---|---|---|---|
| Hide login URL | Yes, with regenerate | Yes | Some do (Defender, AIOS) |
| Email 2FA | Built in | No | Yes (paid tier for some) |
| 2FA code-request throttling | Per IP and per account | No | Generic login limits |
| XML-RPC / REST password auth blocked for 2FA accounts | Always | No | Separate toggle, if at all |
| Cloudflare real-IP aware | Automatic | N/A | Manual configuration |
| HIBP breach screening | Always on | No | No |
| Last-N password reuse prevention | Always on | No | No |
| Forced password rotation | Optional, configurable | No | Some do (paid) |
| Inactive account lock | Optional, batch email alerts | No | No |
| Force-all password reset | One click, optional session kill | No | Manual per-user |
| Firewall / malware scan | No (out of scope) | No | Yes (that's their focus) |
| Setting screens to learn | 2 | 1 | Many (10+) |
If you already run Wordfence or a similar suite for firewall and malware scanning, you can keep it — just turn off its 2FA and hide-login features so they don't collide with Silverback Login. Silverback focuses on the credential layer; the big suites focus on the request layer. They complement each other.
Ready to try it
Download Silverback Login.
Free. No account. No license key. No paid tier. Download the plugin, upload to WordPress, activate. The defaults do the rest.