Linux 软件免费装
Banner图

Login Delay Shield

开发者 michael.damoiseau
更新时间 2026年6月15日 18:24
捐献地址: 去捐款
PHP版本: 3.5.1 及以上
WordPress版本: 7.0
版权: GPLv2 or later
版权网址: 版权信息

标签

security login brute-force xmlrpc lockout

下载

1.3 2.1.1 2.2.4 1.4 1.5 1.1 1.3.1 1.5.1 2.0.0 2.1.0 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.3 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0

详情介绍:

WordPress is one of the most widely used content management systems on the internet, making it a frequent target for bots and hackers attempting brute-force attacks. A brute-force attack works by systematically trying passwords until finding the correct one. Login Delay Shield defends against this by adding a configurable delay after each failed login attempt. Since successful logins are never delayed, legitimate users experience no slowdown. This approach is particularly effective against bots that send thousands of login requests, as each failed attempt forces the attacker to wait before trying the next password. Features: Free means free Login Delay Shield has no ads, no upsells, no premium tier, and no account or API key requirement. Every admin notice is dismissible, and the plugin never nags you to upgrade — there is nothing to upgrade to. You can always get back in A security plugin that locks out its own administrator is worse than no security at all. Login Delay Shield is built so an admin can always recover access: This plugin is not a complete security solution — dedicated security plugins offer more comprehensive protection. However, Login Delay Shield adds an effective layer of defense that works alongside your existing security measures without conflict. Note: This plugin was formerly known as "WP Login Delay".

安装:

  1. Upload the wp-login-delay folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. That's it, Login Delay Shield is installed and working

屏幕截图:

  • Email notification and IP lockout settings.
  • IP whitelist and XML-RPC protection settings.
  • Dashboard widget showing recent failed login attempts.

升级注意事项:

2.4.0 Adds proxy/CDN-aware IP detection (Cloudflare, Sucuri, nginx), a WLDELAY_SAFE_MODE emergency constant, and a Custom Login URL self-check that prevents 404 lockouts. No behavior change unless you enable the features. 2.2.0 Adds Custom Login URL feature: move the login page to a custom URL and block direct access to wp-login.php. Disabled by default — no behavior change on upgrade. 2.1.5 Hardens default handling for missing REST/application-password option keys on migrated or legacy installs. 2.1.4 Adds 2FA health check notice on the settings page and extensible provider detection via filter hook. 2.1.3 Adds telemetry log filters, filtered CSV export, and batched streaming for large exports. 2.1.2 Adds CSV export for the failed login log, REST API and application-password auth protection, and fixes lockout recovery clearing failure counters. 2.1.1 Adds emergency lockout recovery tools: admin Unlock Current IP action and WP-CLI commands to unlock a specific IP or flush all lockouts. 2.1.0 Adds username-aware throttling/lockout (IP + username), login feedback messages (remaining attempts + lockout countdown), and improves failed-attempt tracking for progressive delay mode. 2.0.0 Major update with progressive delays, IP lockout, whitelist, XML-RPC protection, email alerts, failed login logging, and 18 language translations. Fully accessible admin interface. 1.3.1 Code is still the same, only the supported version of WordPress has been updated in the documentation.

常见问题:

How does this plugin protect my site?

When a bot attempts a brute-force attack, it tries thousands of passwords as fast as possible. By adding a delay (even just 1 second) after each failed attempt, the attack becomes impractical. A one-second delay is barely noticeable to legitimate users but makes a huge difference when multiplied across thousands of attempts.

Where are the plugin settings?

Go to Settings > Login Delay Shield

What are protection profiles?

Protection profiles are guided presets in the Security Setup Wizard. Applying a profile updates the main delay, progressive delay, lockout, email alert, and authentication endpoint settings, while still leaving every individual control editable.

What is progressive delay?

Progressive delay increases the wait time with each consecutive failed attempt from the same IP address. For example, the first failure might delay 1 second, the second failure 2 seconds, and so on. This makes repeated attacks increasingly slow.

How does IP lockout work?

After a configurable number of failed attempts (default: 10), login attempts are temporarily blocked. You can choose whether attempts are counted by IP only or by IP + username (recommended for shared office/mobile IPs). Lockout duration is configurable (default: 60 minutes).

What are the "attempts remaining" and countdown messages?

When lockout is enabled, failed logins show how many attempts remain before temporary lockout. If lockout is triggered, the error message includes a countdown (for example, "try again in 2 minutes") so users know when to retry.

How do I whitelist my own IP?

Enable the IP whitelist feature and add your IP address (or a range using CIDR notation like 192.168.1.0/24). Whitelisted IPs bypass all delays and lockouts, ensuring you never lock yourself out.

What happens if I lock myself out?

You can always get back in. Lockouts are temporary by design (24 hours maximum — there are no permanent bans), so waiting always works. To recover immediately:

  • If another administrator can log in, the Active Lockouts manager on the settings page shows every current lockout with a one-click Unlock, and an "Unlock Current IP" action.
  • With shell access, use WP-CLI: wp wp-login-delay unlock-ip <ip> or wp wp-login-delay flush-lockouts.
  • With only FTP access, add define( 'WLDELAY_SAFE_MODE', true ); to wp-config.php — this safe mode disables all delays and lockouts until you remove the line (a warning shows in the admin while it is active).
  • To avoid lockouts entirely, whitelist your own IP (CIDR ranges supported) — whitelisted IPs bypass all delays and lockouts.

Is there a premium version? Will I see ads or upsells?

No. Login Delay Shield is completely free: no ads, no upsells, no premium tier, no account, and no API keys. Every admin notice is dismissible.

What if my custom login URL stops working?

Some plugins that move the login page can lock you out behind a 404 with no way back. Login Delay Shield ships an emergency bypass: add define( 'WLDELAY_DISABLE_CUSTOM_LOGIN', true ); to wp-config.php and the standard wp-login.php works again immediately — no need to disable the plugin. The custom slug also uses raw path matching, so it keeps working even with stale rewrite rules or plain permalinks.

I use Cloudflare (or another proxy/CDN) — do I need to configure anything?

Yes: enable "Trust proxy headers" under Advanced settings. Behind a proxy or CDN, every visitor reaches your server from the proxy's IP address — without this setting, one attacker's failed logins would count against everyone and could lock out all users. With it enabled, the plugin reads the visitor's real IP from CF-Connecting-IP (accepted only when the connection actually comes from Cloudflare's published IP ranges, so it cannot be spoofed), X-Sucuri-ClientIP, Client-IP, X-Real-IP, or X-Forwarded-For. The settings page shows a warning when it detects a proxy while this setting is off — and the reverse warning if it is on without a proxy in front, since that would allow IP spoofing.

Should I block XML-RPC?

If you don't use the WordPress mobile app or remote publishing tools like Windows Live Writer, blocking XML-RPC authentication removes a common attack vector. You can also choose to just apply delays without blocking it entirely.

Should I protect password reset requests?

Yes, for most sites. Attackers can abuse password reset forms to probe accounts or create noise during credential attacks. Password reset protection applies the same delay and lockout behavior used for login attempts, logs the source as password-reset, and keeps messages generic so the form does not reveal whether a username or email exists.

How do email notifications work?

When enabled, the plugin tracks failed login attempts per IP address. Once the threshold is reached (default: 5 attempts), an email is sent to alert you. The counter resets after one hour of no failed attempts from that IP.

Where can I see failed login attempts?

A dashboard widget shows the 10 most recent failed login attempts, including the time, username attempted, IP address, and source. It also includes a lightweight 7-day trends panel with daily totals, top sources, top IPs, and top targeted usernames. The widget is only visible to administrators (manage_options). Note: because the log records whatever was typed into the username field, a user who accidentally types their password there will have it shown in the widget and stored in the log — treat the log as sensitive.

How do I use fail2ban logging?

Enable fail2ban logging under Settings > Login Delay Shield > Login Log. If the log path is empty, Login Delay Shield writes to login-delay-shield-fail2ban/login-delay-shield-fail2ban.log in a plugin-owned temporary directory outside the WordPress uploads tree and adds basic .htaccess/index.html protections. Custom paths are restricted to the protected default directory by default; use the wldelay_fail2ban_allowed_log_dirs filter only for server-protected directories. If a custom path is rejected, logging is disabled instead of silently writing somewhere else. If lockout-event logging is enabled, an attempt that triggers a lockout may produce both a failed login line and a lockout line, so tune your jail's maxretry accordingly. The log is rotated to a single .log.1 backup once it reaches 5 MB so it cannot grow without bound; adjust or disable this with the wldelay_fail2ban_max_log_bytes filter (return 0 to rely on system logrotate instead). Log lines include an ISO-8601 timestamp, stable prefix, and fields such as: 2026-05-04T12:00:00+00:00 Login Delay Shield: failed login source=wp-login ip=203.0.113.10 username=admin A fail2ban filter can match the IP with the exact canonical failregex: failregex = ^\s*\S+ Login Delay Shield: (?:failed login|lockout) source=\S+ ip=<HOST> username=\S+$ The Download fail2ban config button on the settings page generates the exact filter and jail files — prefer it over copying by hand.

Is the admin interface accessible?

Yes! Login Delay Shield follows WCAG 2.1 accessibility guidelines. All settings are fully keyboard navigable, screen reader compatible, and include proper ARIA attributes. Collapsible sections can be toggled with Enter or Space keys, tooltips appear on focus (not just hover), and all dynamic changes are announced to assistive technologies.

Does this plugin work better with an object cache?

For high-traffic sites or sites experiencing frequent attacks, we recommend using a persistent object cache like Redis or Memcached. The plugin uses WordPress transients to track failed login attempts and lockouts per IP address. By default, transients are stored in the database. During a distributed brute-force attack (many IPs), this can create additional database queries. With an object cache installed:

  • Transient reads/writes go to memory instead of the database
  • Much faster performance under attack conditions
  • Reduced database load
Popular object cache plugins: Redis Object Cache, W3 Total Cache, LiteSpeed Cache. Most managed WordPress hosts (WP Engine, Kinsta, Flywheel) include object caching by default.

What languages are supported?

Login Delay Shield is translated into 18 languages:

  • English (default)
  • Arabic (العربية)
  • Chinese Simplified (简体中文)
  • Czech (Čeština)
  • Dutch (Nederlands)
  • French (Français)
  • German (Deutsch)
  • Indonesian (Bahasa Indonesia)
  • Italian (Italiano)
  • Japanese (日本語)
  • Korean (한국어)
  • Polish (Polski)
  • Portuguese - Brazil (Português do Brasil)
  • Russian (Русский)
  • Spanish (Español)
  • Swedish (Svenska)
  • Thai (ไทย)
  • Turkish (Türkçe)
  • Vietnamese (Tiếng Việt)
The plugin automatically uses your site's language setting. Want to help translate into another language? Visit translate.wordpress.org.

更新日志:

2.5.0 Distributed attack detection. New Features: 2.4.1 Packaging fix. Maintenance: 2.4.0 Lockout-proof recovery and proxy/CDN awareness. New Features: 2.3.4 fail2ban logging hardening. Improvements: 2.3.3 Security Setup Wizard. New Features: 2.3.2 Password reset protection. New Features: 2.3.1 Patch release with CI fixes and new telemetry feature. New Features: 2.3.0 Performance, UX, architecture, and CI improvements. New Features: 2.2.4 Top targeted usernames in login telemetry and hardening. New Features: 2.2.3 Complete Custom Login URL runtime, Trend Analytics queries, and bug fixes. New Features: 2.2.2 Micro-hardening — input sanitization, i18n completeness, and code documentation. Improvements: 2.2.1 Code housekeeping — JavaScript extraction and admin UI consistency. Improvements: 2.2.0 Adds Custom Login URL — the last major unimplemented roadmap feature. New Features: 2.1.6 Small release focused on dashboard observability, admin polish, and release metadata improvements. New Features: 2.1.5 Patch release focused on safer defaults for migrated/legacy installs. Improvements: 2.1.4 Adds 2FA health check notice and code quality improvements. New Features: 2.1.3 Adds telemetry log filters and hardens the CSV export. New Features: 2.1.2 Feature and bugfix release. New Features: 2.1.1 Patch release focused on lockout recovery tooling. New Features: 2.1.0 Minor release focused on smarter throttling and lockout behavior. New Security Feature: 2.0.0 Major release with comprehensive security features and modern admin interface. New Security Features: 1.5 1.4 1.3.1 1.3 1.2 1.1 1.0