Skip to content
WordPress.org
  • Showcase
  • Plugins
  • Themes
  • Hosting
  • News
    • Learn WordPress
    • Documentation
    • Education
    • Forums
    • Developers
    • Blocks
    • Patterns
    • Photos
    • Openverse ↗︎
    • WordPress.tv ↗︎
    • About WordPress
    • Make WordPress
    • Events
    • Five for the Future
    • Enterprise
    • Gutenberg ↗︎
    • Job Board ↗︎
  • Swag ↗︎
  • Get WordPress
Get WordPress
WordPress.org

Plugin Directory

Flex Website Security

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

Flex Website Security

By Flex Plugins
Download
  • Details
  • Reviews
  • Installation
  • Development
Support

Description

Flex Website Security is a lightweight hardening toolkit — not a full WAF or malware scanner. It reduces common attack surfaces: brute-force logins, XML-RPC abuse, user enumeration, and loose admin defaults.

  • Limit failed login attempts, with a lockout list you can unblock immediately
  • Permanently block or unblock IPs
  • Restrict by country: Allow from or Restrict from, on the whole site or admin only
  • Custom login URL and hide wp-admin for guests
  • Optional Cloudflare Turnstile or Google reCAPTCHA on login forms
  • Login honeypot and generic login errors
  • Disable XML-RPC and the theme/plugin file editor
  • Hide WordPress version
  • Block user enumeration
  • Basic security headers (HSTS is left to Flex SSL)

Admin CSS and JavaScript ship with the plugin. Remote scripts and API calls run only when you enable captcha or the optional country lookup.

Privacy

IP lockouts and permanent blocks are stored in your WordPress database. Only administrators can view or change them on Flex Website Security → Access.

Captcha (off by default): if you choose Cloudflare Turnstile or Google reCAPTCHA and save both keys, the login form loads that provider’s script and sends the visitor IP plus the captcha token to the provider for verification.

Country lookup (off by default): country rules first use CDN headers (Cloudflare, CloudFront, and similar). If you enable the optional geojs.io lookup, public visitor IPs without a header are sent to geojs.io and cached for 7 days.

See Third-party services below for URLs, terms, and privacy policies.

Third-party services

These services are optional and off by default. No third-party script is loaded unless you choose a captcha provider and save both keys, or you enable the geojs.io lookup.

Cloudflare Turnstile

When enabled, the login form loads https://challenges.cloudflare.com/turnstile/v0/api.js and verifies tokens at https://challenges.cloudflare.com/turnstile/v0/siteverify. Cloudflare receives the visitor IP and token.

  • Service: https://www.cloudflare.com/application-services/products/turnstile/
  • Terms: https://www.cloudflare.com/website-terms/
  • Privacy: https://www.cloudflare.com/privacypolicy/

Google reCAPTCHA

When enabled, the login form loads https://www.google.com/recaptcha/api.js and verifies tokens at https://www.google.com/recaptcha/api/siteverify. Google receives the visitor IP and token.

  • Service: https://www.google.com/recaptcha/about/
  • Terms: https://policies.google.com/terms
  • Privacy: https://policies.google.com/privacy

geojs.io

When enabled on Access, visitor IPs without a CDN country header are looked up at https://get.geojs.io/v1/ip/country/{ip} and cached for 7 days.

  • Service: https://www.geojs.io/
  • Terms / privacy: https://www.geojs.io/

License

Flex Website Security is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

For more details, see https://www.gnu.org/licenses/gpl-2.0.html.

Installation

  1. Upload the flex-website-security folder to /wp-content/plugins/, or install the zip via Plugins → Add New → Upload Plugin.
  2. Activate Flex Website Security.
  3. Go to Flex Website Security → Settings and save the hardening options you need.
  4. Optional: Login page for a custom login URL and captcha.
  5. Optional: Access for lockouts, permanent IP blocks, and country rules.
  6. Open Audit to confirm which protections are on.

FAQ

Is this a firewall or malware scanner?

No. Flex Website Security turns on common hardening options. Pair it with Flex SSL for HTTPS and HSTS, and keep WordPress, themes, and plugins updated.

What if I lock myself out of a custom login URL?

Add define( 'FLEX_SECURITY_DISABLE_CUSTOM_LOGIN', true ); to wp-config.php, or rename the plugin folder over SFTP. Bookmark the new login URL before you log out.

What if a country rule blocks the site or login?

Add define( 'FLEX_SECURITY_DISABLE_COUNTRY_BLOCK', true ); to wp-config.php, then fix Mode, Apply to, or the country list on Access.

Whole website mode still allows the login form so you can sign in and change the rule. Admin-only mode restricts login and wp-admin for guests.

Does Clear lockouts remove permanent IP blocks?

No. It removes temporary failed-login lockouts only. Permanent blocks stay until you Unblock them on Access.

Do captcha failures count toward lockout?

No. Failed captcha checks do not increment the attempt counter.

Will this break Jetpack or a mobile app?

Disabling XML-RPC or Application Passwords can affect older apps and some Jetpack features. Turn those options off if you still need them.

What happens when I uninstall?

Deleting the plugin removes settings, IP lockouts/blocks, and country lookup cache. It does not remove DISALLOW_FILE_EDIT if you defined that constant yourself in wp-config.php.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Flex Website Security” is open source software. The following people have contributed to this plugin.

Contributors
  • Flex Plugins
  • Flex Dev

Translate “Flex Website Security” into your language.

Interested in development?

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

Changelog

1.2.3

  • Renamed the plugin to Flex Website Security (slug flex-website-security).

1.2.2

  • Removed Plugin URI for now. Author URI remains https://flexible.am/.

1.2.1

  • WordPress.org review readiness: complete readme (privacy, installation, FAQ, service terms) and Plugin URI.
  • Tested up to WordPress 7.1.
  • Fixed Access → Clear lockouts (it required an IP in the URL and never ran).

1.2.0

  • Added Access: view lockouts, permanently block or unblock IPs immediately, and country allow/restrict rules (whole site or admin only).

1.1.0

  • Added Login page: custom login URL, hide wp-admin for guests, Turnstile and reCAPTCHA.

1.0.0

  • Initial release.

Meta

  • Version 1.2.3
  • Last updated 1 day ago
  • Active installations Fewer than 10
  • WordPress version 6.2 or higher
  • Tested up to 7.1
  • PHP version 7.4 or higher
  • Tags
    loginrecaptchasecurityturnstilexml-rpc
  • Advanced View

Ratings

No reviews have been submitted yet.

Your review

See all reviews

Contributors

  • Flex Plugins
  • Flex Dev

Support

Got something to say? Need help?

View support forum

  • About
  • News
  • Hosting
  • Privacy
  • Showcase
  • Themes
  • Plugins
  • Patterns
  • Learn
  • Documentation
  • Developers
  • WordPress.tv ↗
  • Get Involved
  • Events
  • Donate ↗
  • Swag ↗
  • WordPress.com ↗
  • Matt ↗
  • bbPress ↗
  • BuddyPress ↗
WordPress.org
WordPress.org
  • Visit our X (formerly Twitter) account
  • Visit our Bluesky account
  • Visit our Mastodon account
  • Visit our Threads account
  • Visit our Facebook page
  • Visit our Instagram account
  • Visit our LinkedIn account
  • Visit our TikTok account
  • Visit our YouTube channel
  • Visit our Tumblr account
Code is Poetry
The WordPress® trademark is the intellectual property of the WordPress Foundation.