Zum Inhalt springen
WordPress.org

Deutsch (Schweiz)

  • Themes
  • Plugins
  • News
  • Über
  • Mitwirken
  • Lerne WordPress
  • Hol dir WordPress
Hol dir WordPress
WordPress.org

Plugin Directory

Web-Art Login Shield with reCAPTCHA

  • Submit a plugin
  • My favorites
  • Log in
  • Submit a plugin
  • My favorites
  • Log in

Web-Art Login Shield with reCAPTCHA

By WEB-ART Creative Design
Download
  • Details
  • Reviews
  • Installation
  • Development
Support

Description

Web-Art Login Shield with reCAPTCHA is a focused security plugin that protects WordPress authentication, Elementor Login widgets and Elementor Forms against automated attacks.

It strengthens wp-login.php, Elementor Login and Elementor Forms by integrating Google reCAPTCHA v2 verification and optional IP-based rate limiting, without replacing or modifying WordPress core authentication logic.

The plugin is intentionally lightweight and transparent:
– no ads
– no telemetry or analytics sent to the author
– no third-party dashboards provided by the plugin
– no all-in-one security suite overhead

All login protection modules (reCAPTCHA, Login Protect, Advanced login URL) are opt-in and disabled by default.

Additionally, the plugin can apply a small XML-RPC hardening rule-set (disables a few high-risk XML-RPC methods) to reduce common abuse vectors. This does not disable XML-RPC completely. XML-RPC hardening is applied only when Login Protect is enabled and «Protect XML-RPC logins» is enabled.

Each module (reCAPTCHA, Login Protect, Advanced login URL) can be enabled independently. Elementor reCAPTCHA options require reCAPTCHA to be configured and verified.

Key Features

reCAPTCHA v2 integration

  • reCAPTCHA v2 checkbox for wp-login.php (when enabled and IP is not allowlisted)
  • server-side token verification for WordPress login and Elementor Forms validation
  • reCAPTCHA must be verified before enabling protection

Elementor reCAPTCHA options

  • automatic frontend injection for Elementor Login widgets (when enabled)
  • optional frontend injection for Elementor Forms (Elementor Pro) (when enabled)
  • Custom Alignment: Ability to set Left, Center, or Right alignment for reCAPTCHA in both Elementor Login and Elementor Forms directly from plugin settings.
  • Elementor frontend scripts inject reCAPTCHA only when they detect relevant widgets/forms in the DOM (supports dynamically loaded content, popups, AJAX, etc.)
  • Google reCAPTCHA scripts are not loaded for allowlisted IPs

Whitelist IPs (reCAPTCHA)

  • reCAPTCHA IP allowlist (allowlisted IPs bypass reCAPTCHA checks on wp-login.php, Elementor Login and Elementor Forms; Login Protect may still apply)
  • reCAPTCHA allowlist accepts one entry per line (exact IP match only)
  • optional note format supported: IP | reason (reason is ignored for matching)

Login Protect (IP-based lockouts)

  • failed login attempt counting per IP address
  • timed lockouts after a configurable threshold
  • blocked IP list (lockouts expire automatically after the configured lockout time)
  • recent security event log (stored locally)
  • wp-login.php lockout UX: countdown notice and temporary submit blocking during an active lockout
  • Login Protect is independent of reCAPTCHA (can be enabled and used without reCAPTCHA enabled)
  • three practical protection modes:
    • MODE 1 – reCAPTCHA only
    • MODE 2 – reCAPTCHA + Login Protect
    • MODE 3 – Login Protect only

Trusted IPs (Login Protect)

  • separate allowlists for reCAPTCHA and Login Protect (exact IP match only)
  • Login Protect allowlist accepts one entry per line (exact IP match only)
  • optional note format supported: IP | reason (reason is ignored for matching)

REST API and XML-RPC protection (optional)

  • optional protection for authentication attempts via XML-RPC and REST API (applies only when the corresponding checkbox is enabled; Login Protect must be enabled)

XML-RPC hardening (optional)

  • optionally disables a small set of high-risk XML-RPC methods commonly abused by attackers:
    • pingback.ping
    • pingback.extensions.getPingbacks
    • system.multicall
  • XML-RPC hardening is applied only when Login Protect is enabled and «Protect XML-RPC logins» is enabled
    This reduces abuse without disabling XML-RPC entirely.

Advanced login URL (optional)

  • single toggle enables Advanced login behavior
  • custom login endpoint (rewrites requests to the standard WordPress login handler without altering core authentication logic)
  • when Advanced is enabled, wp-login.php and wp-admin are protected for non-authenticated visitors
  • protection behavior is configured via two required fields:
    • Custom login URL slug (example: «secure-login-1234»)
    • Default redirect slug (recommended: «404» to display the active theme’s 404 page)
  • both fields are required when Advanced is enabled (saving is blocked if any field is empty)
  • if fields are empty when enabling Advanced, the plugin auto-generates a secure random login slug and sets the redirect slug to the recommended default
  • protection applies only to non-authenticated users (logged-in users can still access wp-admin and wp-login.php)
  • safe fallback handling to avoid logout loops (wp-login.php?action=logout remains accessible)

IP Blocking (Site-wide)

  • single toggle enables site-wide IP blocking
  • permanently blocks selected IP addresses from accessing the entire site (returns HTTP 403)
  • blocklist accepts one entry per line (exact IP match only)
  • optional note format supported: IP | reason (reason is ignored for matching)
  • recommended use cases: persistent abuse, scraping, hostile bots, repeated attacks not covered by login-only protection
  • warning: do not add your own IP address unless you have alternative access (hosting panel / WP-CLI / database access) to remove the entry

Technical Design Principles

  • Fail-closed security model (scoped)
    If reCAPTCHA verification cannot be completed and reCAPTCHA protection is enabled for the given login or form, the request is rejected to reduce the risk of automated bypass.
    Administrators can always regain access by disabling the feature in plugin settings or by deactivating the plugin via hosting or FTP.

  • Non-intrusive defaults
    Login protection modules remain disabled until explicitly enabled by an administrator.

  • Conflict awareness
    If another plugin injects reCAPTCHA into login or form flows, it should be disabled to avoid duplicate widgets or verification conflicts.

  • Emergency config kill-switches (wp-config.php)
    For recovery scenarios (e.g. accidental lockouts), selected modules can be force-disabled via wp-config.php constants. This does not bypass security rules; it disables the module logic before it runs. Remove the constant to restore normal behavior.

External Services

This plugin integrates with Google reCAPTCHA v2, an external service provided by Google LLC.

reCAPTCHA features are disabled by default. The plugin does not load reCAPTCHA scripts or send verification requests unless an administrator enables reCAPTCHA protection and/or uses the «Verify reCAPTCHA» test in the plugin settings.

Google’s reCAPTCHA JavaScript (https://www.google.com/recaptcha/api.js) may be loaded on:
– wp-login.php (when reCAPTCHA is enabled and the visitor IP is not allowlisted)
– the frontend (when Elementor Login protection is enabled and a non-allowlisted visitor loads the page; injection occurs only if Elementor Login widgets are detected in the DOM)
– the frontend (when Elementor Forms protection is enabled and a non-allowlisted visitor loads the page; injection occurs only for Elementor Forms)
– the plugin settings page only when an administrator runs the «Verify reCAPTCHA» test (if provided in the UI)

When a visitor (or admin during verification) completes the reCAPTCHA challenge:
– a verification token (g-recaptcha-response) is generated in the browser
– during server-side verification on your website, the token and the configured Secret Key are sent to:
https://www.google.com/recaptcha/api/siteverify
– the visitor’s IP address is sent to Google as the remoteip parameter when it is available on the server

The plugin sends the g-recaptcha-response token to Google only when the protected form is submitted (login attempt / form submission) or when an administrator runs the «Verify reCAPTCHA» test.
The plugin does not send usernames, passwords, email addresses, or any form field contents to Google – only the reCAPTCHA token, the configured Secret Key, and the visitor IP address (remoteip) when available.

The plugin does not store or process any data returned by Google beyond the verification result, and it does not send any telemetry, analytics, or usage data to the plugin author.

Note: Google reCAPTCHA may set cookies and collect additional device and usage data in the visitor’s browser, as described in Google’s privacy policy and terms. Site owners are responsible for disclosing this in their site privacy policy and obtaining consent where required by applicable law.

Google privacy policies apply:
– https://policies.google.com/privacy
– https://policies.google.com/terms

Privacy

This plugin does not send telemetry, analytics or usage data to the plugin author or any third party.

Local data stored by the plugin (for security purposes only):
– IP addresses related to login attempts / lockouts (Login Protect)
– timestamps of failed attempts and lockouts
– last username associated with a locked IP (Login Protect)
– recent security event log entries (the plugin stores up to the last 30 events; entries rotate automatically)
– last reCAPTCHA configuration or HTTP error (for admin diagnostics)
– permanent site-wide IP blocklist entries (optional notes stored; notes are not used for matching)

Data retention:
– security event log keeps only the most recent entries (up to 30; automatic rotation)
– Login Protect state is stored locally and is automatically pruned (e.g. stale non-locked entries are removed over time and the list is capped)
– permanent site-wide IP blocklist entries are retained until removed by an administrator
– plugin data can be removed during uninstall if the uninstall cleanup option is enabled

All data is stored locally in the WordPress database and is used solely to enforce security rules and display administrative information.

Legal

reCAPTCHA is a trademark of Google LLC.
Elementor is a trademark of Elementor Ltd.
This plugin is not affiliated with, endorsed by, or sponsored by Google LLC or Elementor Ltd.

Screenshots

  • reCAPTCHA settings panel
  • Login Protect settings panel
  • Security event log and blocked IP list
  • WordPress login screen (wp-login.php)
  • Elementor Login widget (frontend)
  • Elementor Form (Elementor Pro)

Installation

To use reCAPTCHA protection, obtain reCAPTCHA v2 Site Key and Secret Key from Google and configure them in the plugin settings.

  1. Install the plugin by uploading the ZIP via Plugins -> Add New -> Upload Plugin, or install it from the WordPress plugin directory after it is published.
  2. Activate the plugin.
  3. Open the plugin settings page in the WordPress admin area.
  4. (Optional) Enter Google reCAPTCHA v2 Site Key and Secret Key.
  5. Save the keys and click Verify reCAPTCHA (if provided).
  6. After successful verification, reCAPTCHA will be enabled automatically.
  7. (Optional) Enable Login Protect lockouts and configure limits and allowlists.
  8. (Optional) Enable Elementor Login and/or Elementor Forms protection.
  9. (Optional) Enable Advanced login options (toggle) and review the generated slugs. Important: copy and store your custom login URL.

FAQ

Do I need reCAPTCHA keys?

Yes. To use reCAPTCHA protection you must configure a reCAPTCHA v2 Site Key and Secret Key in the plugin settings.

Why can’t I enable Elementor reCAPTCHA options?

Elementor Login and Elementor Forms reCAPTCHA can be enabled only after reCAPTCHA v2 is configured and successfully verified in the plugin settings.

Does the reCAPTCHA IP allowlist apply to Elementor too?

Yes. IPs added to the reCAPTCHA allowlist bypass reCAPTCHA checks on wp-login.php, Elementor Login and Elementor Forms. This bypass applies only to reCAPTCHA – Login Protect rate limits and lockouts may still apply.

What happens if Google reCAPTCHA verification is unreachable?

If reCAPTCHA protection is enabled for the given login or form and verification cannot be completed, the request is rejected to reduce the risk of automated bypass. Administrators can disable the feature in plugin settings or deactivate the plugin via hosting or FTP.

Are protections active immediately after installation?

No. Login protection modules are disabled by default and must be explicitly enabled by an administrator.

Does the plugin disable XML-RPC completely?

No. The XML-RPC endpoint is not disabled. The plugin can optionally disable a small set of high-risk XML-RPC methods (pingback and system.multicall) when Login Protect is enabled and «Protect XML-RPC logins» is enabled. Login Protect can also optionally apply rate limiting/lockouts to XML-RPC authentication attempts under the same conditions.

What if Elementor (or another plugin/theme) already adds reCAPTCHA (v2/v3)?

For Elementor Login widgets and Elementor Forms, the plugin avoids injecting a second reCAPTCHA widget if it detects an existing widget or an existing g-recaptcha-response field on the form. If a g-recaptcha-response token is submitted, the plugin will use it for server-side verification.
To avoid conflicts (duplicate widgets, mixed keys, different versions), it is recommended to keep only one reCAPTCHA integration active for a given login/form flow (including wp-login.php).

What is IP Blocking (Site-wide) and how is it different from Login Protect?

Login Protect applies rate limiting and temporary lockouts mainly to authentication attempts (wp-login.php, and optionally REST/XML-RPC logins). IP Blocking is a separate site-wide deny rule that blocks selected IPs from accessing the entire site (HTTP 403), regardless of login attempts.

How does Advanced login URL work?

When Advanced is enabled, wp-login.php and wp-admin are protected for non-authenticated visitors. The login screen is served only under the configured custom login URL slug. Both slug fields are required when Advanced is enabled, and saving is blocked if any field is empty. The default recommended redirect slug is «404» (redirects to /404/ so your theme can display its 404 template).

Is the Advanced login URL slug translated per site language?

No. The Advanced login URL uses a single configured slug value. If you run a multilingual site, choose a neutral slug that you want to use across languages.

I forgot my Advanced login URL slug and cannot access the login screen. What can I do?

You can temporarily disable Advanced login URL protection via wp-config.php:
define(‚LGRE_DISABLE_ADVANCED_LOGIN‘, true);

Important: add the constant in wp-config.php before WordPress loads plugins. A safe place is between «Add any custom values…» and «That’s all, stop editing!».

After you regain access, remove the constant to restore Advanced login URL protection.

I accidentally blocked my own IP address using IP Blocking (Site-wide). What can I do?

You can temporarily disable site-wide IP Blocking via wp-config.php:
define(‚LGRE_DISABLE_IP_BLOCKING‘, true);

Important: add the constant in wp-config.php before WordPress loads plugins. A safe place is between «Add any custom values…» and «That’s all, stop editing!».

After you regain access and remove your IP from the blocklist, remove the constant to restore IP Blocking.

Reviews

One plugin, several useful features

studiochacha 2. Januar 2026 1 reply
Nice combination of login masking, protection and reCAPTCHA. Most importantly – it integrates seamlessly with Elementor.

Lightweight and effective

izaxnu68 26. Dezember 2025 1 reply
The plugin does exactly what it’s supposed to. It secures the login and allows for clean reCAPTCHA alignment in Elementor. It doesn’t slow down the site and is simple to configure. A solid tool.

Lightweight, solid, and doesn’t bloat the site.

misiek1914 24. Dezember 2025 1 reply
Great plugin! It effectively secures Elementor forms and does a great job protecting the WordPress login page. It’s a simple, lightweight tool that’s very easy to set up. Everything works perfectly and doesn’t slow down the site at all. Highly recommended.
Read all 3 reviews

Contributors & Developers

“Web-Art Login Shield with reCAPTCHA” is open source software. The following people have contributed to this plugin.

Contributors
  • WEB-ART Creative Design

Translate “Web-Art Login Shield with reCAPTCHA” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.1.0

  • Feature: Added IP Blocking (Site-wide) with a permanent IP blocklist (HTTP 403 across the site).
  • UX: Separated and standardized admin status labels (permanent vs temporary IP blocks).
  • UX: Documented optional note format support (IP | reason) for reCAPTCHA allowlist and Login Protect trusted IPs.
  • Security: Login Protect lockouts on wp-login.php return HTTP 429 with Retry-After header for active lockouts (POST login attempts only).
  • UX: Added wp-login.php lockout countdown notice («Try again in:») and client-side submit blocking during lockout.
  • Fix: Improved lockout messaging on the login screen to clearly indicate an active lockout when the lockout is triggered.
  • Hardening: Reduced unnecessary request inspection by narrowing wp-login POST attempt detection to relevant contexts.
  • Recovery: Added wp-config.php kill-switch constants to temporarily disable Advanced login URL and/or IP Blocking in emergency situations.

1.0.1

  • Feature: Added visual alignment options (Left, Center, Right) for reCAPTCHA in Elementor Login and Elementor Forms.
  • Security: Enhanced input sanitization standards for better FastCGI/Nginx compatibility.
  • Performance: Disabled reCAPTCHA rendering in the Elementor Editor backend to improve editor performance.
  • Fix: Stabilized Elementor Forms reCAPTCHA alignment in multi-column layouts when column gaps are used.
  • UX: Simplified and unified configuration status labels in the admin settings.
  • Tweak: General code hardening and strict type enforcement.

1.0.0

  • Initial release

Meta

  • Version 1.1.0
  • Last updated 6 Tagen ago
  • Active installations 50+
  • WordPress version 5.8 or higher
  • Tested up to 6.9.1
  • PHP version 7.4 or higher
  • Language
    English (US)
  • Tags
    Brute Forceelementorloginrecaptchasecurity
  • Advanced View

Ratings

5 von 5 Sternen.
  • 3 5-Sterne-Rezensionen 5 Sterne 3
  • 0 4-Sterne-Rezensionen 4 Sterne 0
  • 0 3-Sterne-Rezensionen 3 Sterne 0
  • 0 2-Sterne-Rezensionen 2 Sterne 0
  • 0 1-Sterne-Rezensionen 1 Stern 0

Add my review

See all reviews

Contributors

  • WEB-ART Creative Design

Support

Got something to say? Need help?

View support forum

Donate

Would you like to support the advancement of this plugin?

Donate to this plugin

  • Über
  • News
  • Hosting (engl.)
  • Datenschutz
  • Showcase (engl.)
  • Themes
  • Plugins
  • Vorlagen
  • Learn
  • Support
  • Entwicklung (engl.)
  • WordPress.tv ↗
  • Mitwirken (engl.)
  • Veranstaltungen
  • Spenden (engl.) ↗
  • Five for the Future (engl.)
  • WordPress.com ↗
  • Matt (engl.) ↗
  • bbPress (engl.) ↗
  • BuddyPress (engl.) ↗
WordPress.org
WordPress.org

Deutsch (Schweiz)

  • Das X-Konto (früher Twitter) von WordPress.org besuchen
  • Das Bluesky-Konto von WordPress.org besuchen
  • Das Mastodon-Konto von WordPress.org besuchen
  • Das Threads-Konto von WordPress.org besuchen
  • Die Facebook-Seite von WordPress.org besuchen
  • Das Instagram-Konto von WordPress.org besuchen
  • Das LinkedIn-Konto von WordPress.org besuchen
  • Das TikTok-Konto von WordPress.org besuchen
  • Den YouTube-Kanal von WordPress.org besuchen
  • Das Tumblr-Konto von WordPress.org besuchen
Code ist Poesie.
The WordPress® trademark is the intellectual property of the WordPress Foundation. WordPress® is not the same thing as WP Engine®. Since October 2024, WordPress.org’s creator Matt Mullenweg is a defendant in a legal action from WP Engine®. The WordPress Hosting page does not recommend WP Engine®.