Documentation  ·  Revolutionary Security 1.32.4

Every setting, explained.

All twelve modules.

A complete guide to all twelve modules: what each setting does, what it is set to out of the box, and how to set it up for your site.

Released version 1.32.2

Current release setup and checks

Protect WordPress with login controls, a firewall, activity records, file checks and spam protection.

  • Security Headers includes optional cross-origin isolation. Test embedded services before enabling it.
  • The reCAPTCHA v3 notice can be shown beside protected forms. The setting controls the notice, not whether protection runs.

Check your setup

  • Review Health Check for security headers on static files as well as WordPress responses.
  • Submit a harmless test through each protected form after changing CAPTCHA settings. Do not use real customer data.

Quick start

Up and running in minutes

Step 1

Install and activate

Upload the plugin or install it from the Revolutionary Plugins menu. Fourteen protections switch on immediately.

Step 2

Turn on the firewall

Security, Firewall. Flip the master switch. All 11 rules come on together. Behind Cloudflare? Set the trusted IP source first.

Step 3

Lock down logins

Security, Login Protection. Enable lockouts, and consider a custom login address and required two-factor for admins.

Step 4

Set your alert address

Point file change, vulnerability and new-admin alerts at an inbox that does not live on this site.

Start here

Where everything lives

Everything is under Revolutionary Plugins, Security in wp-admin. Twelve tabs run across the top, in this order: Captcha, Activity, Login Protection, Firewall, Spam, SVG Uploads, Version Privacy, Health Check, Hardening, Security Headers, File Integrity and Country Blocking. The status bar above them shows whether Captcha, Login Protection, Two-Factor and the Firewall are on.

On from the moment you activate

  • Version privacy (generator tags removed, version stamps masked)
  • File integrity monitoring and WordPress core verification
  • Known vulnerability checks (with a license)
  • Admin activity log and new administrator alerts
  • Password policy and leaked password blocking
  • XML-RPC restricted to application passwords
  • Security headers (HSTS, nosniff, referrer, permissions, frame protection)
  • Theme and plugin file editor turned off, discovery links removed
  • PHP blocked in uploads (Apache and LiteSpeed)
  • Math captcha on login, registration, lost password and comments, with rate limiting

Secure Everything, and the at-a-glance grid

On the main dashboard, one click turns on every protection that needs no further input: Login Protection, Two-Factor, Firewall, Spam Protection, User Enumeration Protection, Auto-Ban, File Integrity, Version Privacy, Vulnerability Monitoring, Password Policy, Admin Activity Log, Hardening's file-editor, discovery-link, uploads and readme rules, and Security Headers. It only ever switches something on, so running it again after fine-tuning changes nothing you already set. Deliberately left for you to decide: SVG Uploads, Country Blocking, a custom login address, signed-in-only REST API and the Content Security Policy mode. Below the button, a grid of chips shows every feature's current state and links straight to its settings.

Module 1 of 12

Captcha

Choose one challenge for every protected form, pick which forms get it, and optionally load it site-wide for third-party forms.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Captcha providers and status bar

Choose a provider

Pick from nine providers: Math (built in), Image, Question, Slider, Honeypot, reCAPTCHA v2, reCAPTCHA v3, hCaptcha or Cloudflare Turnstile. Keyed providers show Site Key and Secret Key fields for the one you select.

  • 1. Open Security, Captcha.
  • 2. Click a provider card or choose one from the dropdown.
  • 3. For reCAPTCHA, hCaptcha or Turnstile, paste your site and secret keys.
  • 4. Click Test Captcha. The tester renders the challenge and verifies it for real, and explains any key error with fix steps.
  • 5. Save.

Where to show it

Each form has its own switch. On by default: WordPress login, registration, lost password and comments. Off by default: reset password, Revolutionary Forms, Forums, Ticketing and eCommerce.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Choose which forms get a captcha

Universal form captcha

Loads the active provider on every page so other forms (and reCAPTCHA v3 scoring) can use it. You can hide it for signed-in users and set your own error message.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Universal form captcha

Rate limiting

Five failed captchas from one address on a form within 15 minutes locks that form for that address for 30 minutes. This is always on.

Module 2 of 12

Activity

Four views of what is happening on your site: access locks, successful logins, failed logins, and the admin activity log.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Access locks

Access locks and failed logins

Every lockout with its date, reason, IP and country, user agent and time. Failed Logins also lists wrong passwords and unknown usernames with the account that was tried, alongside failed captchas, and is recorded whether or not Login Protection's lockouts are on. Search the list, keep entries from 1 to 12 months (30 days by default), export to CSV or clear it.

Successful logins

Every completed sign-in, in the same layout as Failed Logins: the account, how it signed in (Password, or Password plus a passkey, authenticator app or emailed code), location, IP address and browser. A sign-in that stops at the two-factor step is not listed until the second factor is passed.

Admin activity

Records who created or deleted users, changed roles, passwords, emails or application passwords, installed, updated or removed plugins and themes, updated WordPress, or changed the site address, admin email, registration or security settings. Each entry notes whether it came from the dashboard, REST API, XML-RPC, WP-CLI or a scheduled task.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Admin activity log

New administrator alerts

On by default. You get an email whenever any account gains administrator rights, even one inserted directly into the database, because the administrator list is re-checked every hour. The Administrators now panel shows the current list.

Module 3 of 12

Login Protection

Eight sub-tabs: Basic, Advanced, 2FA, Passwords, Sessions, User Enumeration, IP Bans and Tools.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Brute-force lockouts

Basic: brute-force lockouts

SettingDefaultWhat it does
Enable Login ProtectionOffMaster switch for lockouts
Max Login Retries3Failures allowed before a lock
Retry Time Period5 minutesWindow the failures are counted in
Access Lock Length60 minutesHow long the IP stays locked
Log non-existent usernamesOffCounts guesses at usernames that do not exist
Mask Login ErrorsOffHides which part of the login was wrong
Block TypeLogin pageLock the login page only, or the whole site
Whitelisted IPsEmptyNever locked; also honored by bans and country blocking

Advanced: custom login address

Move the login page to a secret slug. Afterward wp-login.php, signed-out /wp-admin, /login and /admin return 404, and every WordPress link (reset emails, logout, the 2FA form) uses the new address. The new address is emailed to the admin whenever it changes. Slugs must be 3 to 64 characters, and names like login, admin and dashboard are refused. Not available on multisite.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Custom login address and XML-RPC

Advanced: XML-RPC

Restrict (default) accepts application passwords only and refuses pingbacks. Off entirely refuses every request and stops advertising the endpoint. WordPress default allows everything. The same sub-tab also has anonymous (hashed) IP logging, a login honeypot, and a switch to wipe plugin data on delete.

2FA: email, apps and passkeys

Turn on email two-factor and choose which roles must use it (administrators by default). Authenticator apps and passkeys are enabled by default; each user sets them up on their own profile page with a QR code or their device's passkey prompt.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Two-factor, authenticator apps and passkeys
  • Require an authenticator app or passkey for chosen roles, with 0 to 90 days to set it up (14 by default) and a dashboard reminder.
  • Email backup for app users shows an Email me a code instead link.
  • Code lifetime 1 to 60 minutes (10 by default), 1 to 10 attempts per code (3 by default).
  • If a code cannot be emailed, choose Allow (at most once per hour per account, logged) or Refuse.
  • Accounts that need 2FA can only sign in through the main login page. XML-RPC and front-end password logins are refused for them; application passwords still work.

Passwords

The password policy checks every new password (profile, Add New user, reset form and REST API). Leaked password blocking checks Have I Been Pwned using k-anonymity, so only five characters of a hash leave your site. Stricter rules apply to chosen roles: a minimum length (12 by default, 8 to 64) and no passwords built from the username, email, name or site name. Optionally recheck existing passwords monthly at sign-in.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Password policy and leaked passwords

Sessions

Sign out after inactivity (0 to 1440 minutes, off by default) and limit sessions per account (0 to 20). Apply both to chosen roles. Every user also sees their own sessions, with IP and last activity, on their profile, and can end any of them.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Session controls

User enumeration

One switch enables six rules: block ?author=N probes, disable author archives (off by default), restrict the users REST API to signed-in users, hide authors in oEmbed data, remove the users sitemap, and hide usernames in comment markup.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
User enumeration shield

IP bans

Automatic banning bans an IP site-wide after repeated suspicious events (5 events in 10 minutes bans for a day, by default). Choose what counts: enumeration probes, firewall hits and failed logins. The manual deny list takes single IPs, CIDR ranges and wildcards and works even when automatic banning is off. The Currently banned table lets you unban anyone.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
IP bans

Tools

Copy your recovery URL, a secret link that adds the visiting IP to the whitelist. Diagnostics show PHP and WordPress versions, the GD library, your detected IP and country, and which lookup source was used.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Recovery URL and diagnostics

Module 4 of 12

Firewall

A request that matches a rule is logged and refused with HTTP 403. Logged-in admins, wp-admin, REST, cron and WP-CLI are exempt.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Firewall rules and trusted proxies

The 11 rules

  • Block bad bots (sqlmap, nikto, masscan, wpscan, dirbuster and more)
  • Directory traversal
  • HTTP response splitting
  • Cross-site scripting (XSS)
  • Cache poisoning via forwarded host headers
  • Dual-header exploits (header injection)
  • SQL, PHP and code injection, including URL-encoded payloads
  • File injection and inclusion (LFI and RFI)
  • Null byte injection
  • Web shell exploits (c99, r57, wso and others)
  • PHP information leakage (phpinfo, .env, .git, wp-config backups)

Trusted IP source and proxies

Choose Auto (recommended), Direct, Cloudflare, X-Forwarded-For or X-Real-IP. A forwarded header is believed only from a trusted proxy you list (up to /8 for IPv4 or /16 for IPv6) or from Cloudflare's published ranges. The screen shows what address the request came from and which visitor address it resolved, and warns if the setup looks wrong.

Module 5 of 12

Spam

Stops comment and Revolutionary Forms spam with no API keys and no puzzle for real people.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Spam protection
  • Honeypot: a hidden field only bots fill in (on).
  • Time check: a signed timestamp rejects forms submitted faster than a human could, or with a tampered token (on, 3 seconds minimum).
  • Keyword filter: case-insensitive check of author, email, URL and message against your blocked words (on).
  • Choose comment forms, Revolutionary Forms, or both.

Every blocked submission is recorded in Activity as a spam event.

Module 6 of 12

SVG Uploads

Off by default. When on, every uploaded SVG is rebuilt from an allowlist before it is stored.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Safe SVG uploads
  • Scripts, on* event handlers, foreignObject and animation elements are removed.
  • Files with a DOCTYPE or XML entities are refused.
  • External links, references and CSS that fetches or runs code are removed.
  • .svgz is refused and files are capped at 2 MB.
  • Only the cleaned copy is kept, anything removed is logged, and SVGs get proper dimensions so thumbnails work.

Module 7 of 12

Version Privacy

On by default. Removes generator tags from the page head, feeds and plugins, and replaces version stamps on scripts and styles with a site-specific hash so browser caching still works.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Version privacy

Module 8 of 12

Health Check

Nine configuration checks, graded Fix now, Worth fixing or Good, each with How to fix steps and a Check again button. They also appear in Tools, Site Health.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Health check and known vulnerabilities
  • wp-config.php permissions
  • Exposed files in the site root (config copies, database dumps, .env, .git, phpinfo, Adminer)
  • Security keys and salts
  • .htaccess permissions
  • An account named admin
  • Theme and plugin file editor
  • Automatic security updates
  • Database table prefix
  • Directory listing (a live HTTP test of wp-content, plugins, themes and wp-includes)
  • WordPress version hidden (fetches the homepage for the generator tag and sends a HEAD request for readme.html, rather than trusting a setting)

Known vulnerabilities

Once a day, and again a few minutes after any update, the site sends the names and versions of WordPress core and every plugin and theme (inactive ones included) to the Revolutionary update server, which matches them against its daily copy of the Wordfence Intelligence feed. Findings show CVSS, CVE, the fixed version (or no fix released) and a link to the advisory. Each finding is emailed once. Requires a Revolutionary license.

Module 9 of 12

Hardening

Switches that close common doors, including the version disclosure and directory listing checks Health Check flags, with a live test for the one that matters most.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Hardening
SettingDefaultWhat it does
Turn off the file editorOnRemoves the theme and plugin file editors
Remove discovery linksOnStrips REST, RSD, Windows Live Writer and shortlink tags
REST API accessOpenOr signed-in users only, with public namespaces as exceptions
Deny PHP in uploadsOnWrites an uploads/.htaccess rule, or shows the nginx block to add
Block readme.html and license.txtOnKeeps a deny rule in the root .htaccess (Apache, LiteSpeed) so neither file's literal version line or license text can be fetched directly; nginx gets the equivalent rule to add
Block directory listingOnKeeps Options -Indexes in the root .htaccess, inherited by wp-content, plugins, themes and wp-includes; nginx's own autoindex off default is noted for servers that never read .htaccess
  • 1. Open Security, Hardening.
  • 2. Click Test now. The plugin writes a harmless PHP file to uploads, requests it over HTTP and deletes it.
  • 3. If the result says PHP ran, add the rule shown for your server and test again.

Module 10 of 12

Security Headers

Browser protections sent with every page. All five standard headers are on by default.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Security headers and CSP
  • Strict-Transport-Security (HSTS), HTTPS only, 1 year by default, optional subdomains.
  • X-Content-Type-Options: nosniff.
  • Referrer policy.
  • Permissions policy: camera, microphone and USB blocked for third parties; location and payment limited to your site.
  • Frame protection against clickjacking, with WordPress embeds still allowed.

Content Security Policy

Off, Report only, or Enforce, on public pages only. The captcha provider's sources are added for you, and you can list extra allowed sources. In report-only mode, visitors' browsers report violations and the tab summarizes them under What the policy would block, with the source, what it was used for, the count and the last page seen.

Cross-origin isolation and static files

Cross-origin isolation is optional. Test the site's embeds and external services before enabling it. Health Check also checks security headers on static files; headers added by WordPress alone do not prove that the web server serves them on an image, script or stylesheet.

Module 11 of 12

File Integrity

On by default. A SHA-256 baseline of your code files, then a report of everything added, changed or removed.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
File integrity findings

Findings

Summary counts for files tracked, files to review, likely web shells and core problems, plus the last and next scan. Filter by path. Each finding is New file, Changed, Core file altered, or Not part of WordPress. Open any file to see its first 8 KB with suspicious lines highlighted, then Accept as legitimate or Delete it (delete is offered only for new or unexpected files).

Settings

SettingDefault
Monitor file changesOn
Scan frequencyTwice a day (or hourly, or daily)
Verify WordPress core against WordPress.org checksumsOn
Email when something changesOn, once per finding
Alert addressAdmin email if empty
Skip these foldersNone
File types watchedPHP variants, .htaccess, .ini, JS and HTML
yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
File integrity settings

Web shell detection

Changed files are checked against 13 behavior rules, such as running PHP or system commands from a request, decoding hidden code and running it, writing request data to a file, long encoded blobs, auto_prepend in config, and making the server run non-PHP files as PHP.

Module 12 of 12

Country Blocking

Deny chosen countries, or allow only the ones you serve. The filter applies to the whole public site; admin screens, REST, cron, WP-CLI, signed-in admins and whitelisted IPs are exempt.

yoursite.com/wp-admin/admin.php?page=revolutionary-security&tab=
Country blocking and traffic map
  • Traffic map: a world map shaded by hits per country, with a Top Countries list.
  • A live preview shows your detected country and whether your IP would be allowed.
  • Lookup source: Auto (Cloudflare, then the server's GeoIP header, then ip-api.com), Cloudflare only, or API only. Results are cached per IP for 24 hours.
  • Custom block message for blocked visitors.

Profile screen

What your users see

Each user manages their own second factors and sessions from Users, Profile.

  • Authenticator app: scan the QR code, then enter a code to confirm before it activates.
  • Passkeys: add or remove Face ID, Touch ID, Windows Hello, phone or security key passkeys.
  • Sessions: see every active session with its IP and last activity, and end any of them.
  • Admins can remove another user's app or end their sessions, but can never enroll an app on someone else's behalf.

Troubleshooting

Common questions

Use your recovery URL from Login Protection, Tools. If you do not have it, wait for the lock to expire, or rename the plugin folder over FTP to disable it temporarily. For a lost custom login address, add the REVSEC_DISABLE_LOGIN_ADDRESS constant to wp-config.php.

Your site is behind a proxy or CDN. Set Firewall, Trusted IP source to Cloudflare, X-Forwarded-For or X-Real-IP, and list your proxy addresses.

Check that the site key and secret key belong to the same provider and version, and that your domain is registered with the provider. The tester shows the provider's exact error and fix steps.

Updates made through WordPress are accepted automatically. Files changed another way (FTP, a deploy script) are reported. Review them and click Accept all if they are yours.

There are none yet. WP-CLI is always exempt from the firewall, bans and country blocking, so it is a reliable way back in.

Stuck on something?

Search the forums, open a ticket, or write to us. A real person reads every message.