Kitgenix CAPTCHA for Cloudflare Turnstile
Kitgenix CAPTCHA for Cloudflare Turnstile adds Cloudflare Turnstile CAPTCHA and anti-spam protection to WordPress, WooCommerce and a wide range of form, membership, community and ecommerce plugins. Challenges are not treated as a client-side decoration: submitted Turnstile tokens are verified server-side with Cloudflare before a protected action is accepted. The plugin is designed for site owners who want to reduce automated login attempts, fake registrations, comment spam, bot-driven checkout abuse and unwanted form submissions while using Cloudflare’s privacy-oriented Turnstile challenge rather than a traditional image CAPTCHA. Configuration, integration controls, diagnostics and local verification metrics are managed inside WordPress. The only service required for CAPTCHA functionality is Cloudflare Turnstile itself; no Kitgenix verification proxy is used. Learn more about Kitgenix WordPress plugins at Kitgenix. Supported WordPress and Plugin Integrations The codebase contains dedicated integrations for: WordPress login. WordPress registration. Lost-password and password-reset flows. WordPress comments. Custom login forms produced with wp_login_form(). WooCommerce login, registration, lost password, checkout and related account flows supported by the integration. Easy Digital Downloads. Elementor forms. Contact Form 7. WPForms. Gravity Forms. Fluent Forms. Formidable Forms. Forminator. Ninja Forms. Jetpack Forms. JetFormBuilder. Kadence Forms. MailPoet. bbPress. BuddyPress. wpDiscuz. Ultimate Member. MemberPress. Paid Memberships Pro. Kitgenix Plugin Score integration points included in the codebase. Each integration is loaded conditionally and can use integration-specific display/validation behaviour rather than forcing one generic hook onto every form system. Server-Side Turnstile Verification The browser obtains a Turnstile response token from Cloudflare’s official widget. When a protected form is submitted, the plugin sends that token to Cloudflare’s official Siteverify endpoint using the WordPress HTTP API. The protected action is allowed only when the verification result satisfies the integration’s validation flow. This server-side step is important because simply placing a widget in the browser is not sufficient protection on its own. The plugin tracks the most recent verification response, error codes and latency for diagnostics and can record aggregate verification metrics locally. Setup Verification for Login-Sensitive Forms Login, registration and other account-sensitive protections can be gated behind a setup-verification state. The administrator can verify the configured Site Key and Secret Key before those protections are treated as ready. This reduces the risk of enabling a broken key pair on a login screen and accidentally locking legitimate administrators or customers out of the site. Site and secret keys can be supplied from plugin settings or from supported environment variables/constants, allowing security-conscious deployments to keep the secret outside the normal WordPress options table. Replay Protection Turnstile tokens are intended to be short lived and single use. The plugin includes optional replay protection that hashes accepted tokens and temporarily remembers that hash. A token that is submitted again during the replay window can be rejected rather than being accepted repeatedly. The replay window is filterable for developers. Stored replay information is a hash/temporary value, not the raw challenge token itself. Honeypot and Layered Anti-Spam Controls An optional honeypot can be rendered alongside Turnstile. This adds a second low-friction signal for simple bots that fill fields a normal visitor never sees. The plugin also supports whitelisting logic so trusted requests can bypass the challenge where appropriate. Whitelist decisions can take account of configured rules and developer filters rather than hard-coding one bypass mechanism for every site. Trusted Proxy and Client IP Handling Sites may sit behind Cloudflare, another reverse proxy or a load balancer. The client-IP component can be configured to trust proxy headers only when the request path matches the trusted-proxy configuration. This avoids blindly believing spoofable forwarding headers from arbitrary visitors. Administrators can also choose whether the resolved visitor IP is included in the Siteverify request to Cloudflare. A developer filter is available to change that behaviour when required by a site’s privacy or infrastructure policy. Widget Appearance and Placement The plugin supports central defaults plus integration-level overrides for Turnstile appearance. Depending on the supported integration, administrators can control options such as theme, size, appearance and language, and can choose placement behaviour where the integration exposes more than one suitable hook. A manual shortcode is also registered: [kitgenix_turnstile] The shortcode is useful when the site owner needs to render the widget in a supported custom workflow. Rendering a widget alone does not automatically secure arbitrary custom PHP processing; custom form handlers must still validate the submitted token server-side. Diagnostics, Metrics and Site Health The plugin includes diagnostics for configuration and verification health, local counters for passed/failed checks, latency information, recent verification events and integration-level metrics. Site Health integration can surface configuration or connectivity issues to administrators. Developer Mode adds additional troubleshooting detail without changing the fundamental requirement that live submissions be verified correctly when protection is active. Settings Portability Settings can be exported and imported for controlled migration between WordPress installations. The transfer system is designed for plugin configuration rather than for exporting visitor submissions or unrelated site data. Performance and Script Loading The public Cloudflare Turnstile script is loaded only for pages/contexts where the plugin determines that a Turnstile widget may be needed. The loader includes duplicate-script detection so multiple integrations do not intentionally enqueue several copies of the same Turnstile API script. Public assets are kept separate from the admin interface, and admin-only diagnostics/settings code does not need to run as part of every anonymous form request. Privacy and Data Flow Turnstile is an external service provided by Cloudflare, so challenge rendering and server-side verification necessarily communicate with Cloudflare. The plugin itself stores configuration and limited diagnostic/aggregate verification data locally. It does not require a Kitgenix account and does not send form contents to Kitgenix for verification. The exact Cloudflare data flow, WordPress.org Hub request and Google Fonts admin request are documented in the External Services section below. Common Uses Protect a WordPress login page from automated credential attacks. Reduce spam registrations on WordPress or WooCommerce. Add anti-bot verification to WooCommerce checkout and account forms. Protect Elementor and popular WordPress form plugins with one central Turnstile configuration. Add a challenge to membership, forum and community registration/login flows. Replace more intrusive CAPTCHA experiences with Cloudflare Turnstile while keeping server-side validation. Developer Notes Shortcode [kitgenix_turnstile] Main settings option kitgenix_captcha_for_cloudflare_turnstile_settings Useful filters Script and display: kitgenix_captcha_for_cloudflare_turnstile_script_url kitgenix_turnstile_freshness_ms kitgenix_turnstile_inline_style Verification: kitgenix_turnstile_siteverify_url kitgenix_turnstile_siteverify_timeout kitgenix_turnstile_siteverify_sslverify kitgenix_turnstile_siteverify_http_args kitgenix_turnstile_send_remoteip kitgenix_turnstile_remote_ip kitgenix_turnstile_token_from_request kitgenix_turnstile_error_codes kitgenix_turnstile_error_message kitgenix_turnstile_replay_message kitgenix_turnstile_skip_wp_login_validation Replay protection: kitgenix_turnstile_replay_ttl Whitelisting and proxy handling: kitgenix_turnstile_is_whitelisted kitgenix_turnstile_trust_headers kitgenix_turnstile_trusted_proxies Operational alerts: kitgenix_turnstile_alert_window_seconds kitgenix_turnstile_alert_failure_spike_min_failures kitgenix_turnstile_alert_failure_spike_failure_rate kitgenix_turnstile_alert_http_error_min_failures Developer logging action: kitgenix_turnstile_dev_log The plugin also exposes context-specific error-message filtering through kitgenix_captcha_for_cloudflare_turnstile_{context}_turnstile_error_message. Privacy and Local Data The plugin stores its configuration in the WordPress database. Depending on enabled features it also stores local operational data such as setup-verification state, aggregate integration metrics, the recent event log and replay-protection transients. The recent event log is limited to 50 events and contains operational fields such as time, integration, success/failure, error codes and Siteverify latency. It does not store raw form submissions, the raw Turnstile response token, the visitor’s raw IP address or the request URL in that log. Turnstile itself is an external Cloudflare service and receives data when a widget is loaded and when the server validates a token. See External Services below. External Services This plugin relies on third-party services for specific functionality. These connections are documented here so site owners can make an informed decision before enabling and using the plugin. Cloudflare Turnstile Cloudflare Turnstile is the CAPTCHA / bot-verification service that provides the plugin’s core protection. A Cloudflare account and Turnstile Site Key / Secret Key are required. When a protected widget is rendered, the visitor’s browser loads Cloudflare Turnstile from: https://challenges.cloudflare.com/turnstile/v0/api.js The browser communicates with Cloudflare as part of the Turnstile challenge. As with normal web requests, Cloudflare can receive network/request information such as the visitor’s IP address and browser/request metadata, and Turnstile evaluates browser signals to generate a verification token. When a protected form is submitted, the WordPress server sends a POST request to: https://challenges.cloudflare.com/turnstile/v0/siteverify By default, that request contains: The configured Turnstile Secret Key The Turnstile response token The visitor IP address as Cloudflare’s optional remoteip parameter when an address is available The remoteip value can be disabled by developers with the kitgenix_turnstile_send_remoteip filter. Cloudflare documentation: https://developers.cloudflare.com/turnstile/ Cloudflare Terms: https://www.cloudflare.com/website-terms/ Cloudflare Privacy Policy: https://www.cloudflare.com/privacypolicy/ WordPress.org Plugin API The shared Kitgenix Hub in wp-admin uses WordPress core’s plugins_api() functionality to request public WordPress.org plugin-directory information such as plugin details, active-install counts, ratings and media. These requests occur on Kitgenix administration screens. The plugin supplies WordPress.org plugin slugs to WordPress core; the outbound request itself is handled by WordPress and can include normal HTTP request metadata generated by WordPress. Responses are cached locally with WordPress transients to reduce repeat requests. WordPress.org: https://wordpress.org/ WordPress.org Privacy Policy: https://wordpress.org/about/privacy/ Google Fonts The Kitgenix administration stylesheet imports the Inter and Manrope font families from Google Fonts. This occurs on Kitgenix plugin administration screens, not as part of the Turnstile verification request itself. Loading those font resources causes the administrator’s browser to connect to Google-hosted domains such as fonts.googleapis.com and fonts.gstatic.com, which can receive normal request information such as IP address and browser headers. Google Fonts: https://fonts.google.com/ Google Privacy Policy: https://policies.google.com/privacy Google Terms: https://policies.google.com/terms Trademark Notice Cloudflare and Cloudflare Turnstile are trademarks or services of Cloudflare, Inc. This plugin is independently developed by Kitgenix and is not affiliated with or endorsed by Cloudflare, Inc. WordPress and WooCommerce trademarks belong to their respective owners. References are descriptive and identify supported integrations. Support Development Kitgenix CAPTCHA for Cloudflare Turnstile is free software. If the plugin is useful to you, you can support continued maintenance and development through the Donate link shown on the WordPress.org plugin page. More WordPress plugins and development resources are available from Kitgenix.
Ultimate Security – Vulnerability Scanner, 2FA, and Login Protection
Ultimate Security handles the traffic that actually reaches a WordPress site: automated login attempts, brute-force runs, comment and form spam, and probes at well-known paths. It covers two-factor authentication, login lockouts, CAPTCHA, a movable login URL, session controls, vulnerability scanning, and Cloudflare edge rules — set up from one admin screen, without editing files or writing firewall rules by hand. There is no usage tracking and nothing phones home. The plugin contacts an outside service only when you switch on a feature that needs one, and each is listed under External Services below. Features that belong to the Pro add-on are labelled as such. Setup wizard The first run is a five-step wizard. You answer a few questions about the site, it runs a quick scan, and you pick one of seven starting templates: basic, moderate, strict, agency, blog, membership, or WooCommerce. Before it changes anything it shows you a full diff, and you can undo everything it did later without losing edits you made yourself. It also gives you an emergency access link — keep it somewhere safe, and you can switch the plugin off from a browser if you ever lock yourself out. Two-factor authentication Email one-time codes, no app required, for any user. Authenticator apps (TOTP and HOTP) with QR enrolment — Google Authenticator, Authy, Microsoft Authenticator and similar. Per-role configuration: pick which roles use email codes and which use an app. Rate limiting on code entry, with a configurable attempt limit and lockout. Optional 2FA event logging. Covers the WordPress, WooCommerce and Ultimate Member login forms, with a separate setting for XML-RPC. Login access control Move wp-login.php to a secret URL so bots can’t find it, with a configurable post-login redirect. HTTP Basic Authentication in front of wp-login.php and wp-admin, no .htaccess editing. The password is stored hashed, repeated failures trigger a lockout, and you can let trusted IPs through. Show your own consent or policy text on the login form. Password policies Require a minimum length, mixed case, numbers and special characters, or start from a preset. Expiry with advance warning, a grace period, and email notification. Password history, so old passwords can’t be reused. Force a password change on first login. Reject compromised passwords, checked against the Have I Been Pwned range API by k-anonymity — the password itself never leaves the site. Optionally turn off self-service password reset and point people at your own process instead. Brute-force protection Limit failed logins and lock offenders out automatically. Progressive lockouts, so repeat offenders wait longer each time. Configurable retry-reset window, plus a permanent block list. A one-time recovery link, so a lockout doesn’t strand you. Session management Limit concurrent logins per user; block the new login or end the oldest session. Idle timeout for inactive sessions. HttpOnly, Secure and SameSite flags on auth cookies. Optionally bind a session to its IP and/or browser to catch hijacking. CAPTCHA and spam Google reCAPTCHA v2 and v3, with a v3 score threshold, IP and user-agent allowlists, a bypass for logged-in users, and a verification log. Cloudflare Turnstile, with theme, size, language and appearance options, deferred loading, custom failure messages, and its own log. Both cover the WordPress login, registration, lost-password and comment forms, and the WooCommerce login, registration, lost-password and checkout forms. No-conflict mode and provider priority keep two CAPTCHAs off the same form. Validate your site and secret keys from the settings page before going live. If the provider is unreachable, forms keep working. Vulnerability scanning Scans WordPress core, plugins and themes for known vulnerabilities. No API key needed — it uses the keyless WPVulnerability database by default. Add a WPScan or Patchstack key for more coverage, with automatic failover between providers. Scheduled scans and email alerts, filtered by severity. Flags plugins that haven’t been updated in a long time. Scan history, run-to-run comparison, and an ignore list for findings you’ve accepted. Results show up in Site Health, the dashboard widget, the plugins list, and menu counters. Cloudflare WAF rules Connect your own Cloudflare account and manage edge rules from wp-admin. Let verified search, monitoring, backup, SEO and social crawlers through. Block aggressive crawlers and sensitive WordPress paths. Block data-center hosts and TOR exit nodes. Challenge large cloud providers and specific countries. Challenge VPN traffic and requests to wp-login.php. Virtual patches that block requests exploiting known core CVEs at the edge until you can update. Preview the generated expressions before deploying, review the live rules on your zone, and read request, threat and bandwidth analytics. Security keys (salts) Rotate the keys and salts in wp-config.php on demand or on a schedule — daily, weekly, monthly, quarterly, or twice a year. Advance notice before a scheduled rotation, so the forced re-login isn’t a surprise. Quiet hours, plus pause and skip-next controls. Rotation history, with the option to restore a previous set. Update manager Set auto-update policy for core, plugins and themes, with per-plugin and per-theme overrides. Update windows, allowed days, and freeze periods for when you don’t want changes. Delay updates by a set number of days to let others hit the bugs first. Optional maintenance mode during updates, and detection of version-controlled installs. Email notifications and a daily digest. Monitoring, security score and logs A security score with a per-check breakdown of what’s pulling it down. Activity log for logins, logouts, lockouts, and 2FA and password events, with a retention period you set. Session log for session events and anomalies. A “who’s online” view of currently active users. Core file-integrity check against the official WordPress.org checksums. Site Health entries covering plugin, server, database, filesystem, theme and WordPress diagnostics. A dashboard widget summarising failed logins, issues found, outdated plugins and the current score. Test mode Run your rules without blocking anyone and review a log of what would have been blocked before you enforce it. Choose which roles it applies to, keep admins excluded, and an admin-bar marker plus a dashboard notice remind you it’s on. Tools, migration and backup Import from Wordfence Login Security — preview what comes across, run it, and roll it back if you change your mind. Export and import settings as JSON for staging-to-production moves or recovery. Reset all settings to defaults, and clear the plugin cache. Diagnostics for REST API, cron (with a manual run trigger), and server status. An emergency deactivation URL that switches the plugin off if you’re locked out. Works with what you already run Ultimate Security detects and adapts to WooCommerce, Ultimate Member, common page builders, form plugins, caching plugins and SEO plugins, and warns you when another security plugin is already doing the same job. WP-CLI wp ultimate-security template list wp ultimate-security template apply [--dry-run] wp ultimate-security template undo wp ultimate-security export [--file= ] wp ultimate-security import [--dry-run] wp ultimate-security status Learn more Website — features and articles. Documentation — setup guides, troubleshooting and how-tos. YouTube — walkthroughs and tutorials. External Services This plugin connects to the following third-party services, and only when you use the related feature: Google reCAPTCHA When: reCAPTCHA protection is enabled. The reCAPTCHA script is then loaded in your visitors’ browsers on the protected forms. Data sent: the visitor’s reCAPTCHA response token, your site secret key, and the visitor’s IP address for verification. Endpoints: https://www.google.com/recaptcha/api.js (browser script, with a preconnect to https://www.gstatic.com) and https://www.google.com/recaptcha/api/siteverify (server-side verification). Terms: https://policies.google.com/terms — Privacy: https://policies.google.com/privacy Cloudflare Turnstile When: Cloudflare Turnstile protection is enabled. The Turnstile script is then loaded in your visitors’ browsers on the protected forms. Data sent: the visitor’s Turnstile response token, your site secret key, and the visitor’s IP address for verification. Endpoints: https://challenges.cloudflare.com/turnstile/v0/api.js (browser script) and https://challenges.cloudflare.com/turnstile/v0/siteverify (server-side verification). Terms: https://www.cloudflare.com/website-terms/ — Privacy: https://www.cloudflare.com/privacypolicy/ WPVulnerability When: the Vulnerability Scanner runs. This is the default vulnerability database and requires no API key. Data sent: your WordPress version and the slugs of your installed plugins and themes. Endpoint: https://www.wpvulnerability.net/ Privacy: https://www.wpvulnerability.net/ WPScan When: the Vulnerability Scanner runs and you have configured a WPScan API key. Data sent: your WPScan API key, your WordPress version, and the slugs of your installed plugins and themes. Endpoint: https://wpscan.com/api/v3/ Terms: https://wpscan.com/terms-of-service/ — Privacy: https://wpscan.com/privacy-policy/ Patchstack When: the Vulnerability Scanner runs and you have configured a Patchstack API key. Data sent: your Patchstack API key, your WordPress version, and the slugs of your installed plugins and themes. Endpoint: https://patchstack.com/database/api/v2/ Terms: https://patchstack.com/terms-of-service/ — Privacy: https://patchstack.com/privacy-policy/ WordPress.org Plugin and Theme Information API When: the Vulnerability Scanner checks whether an extension has been abandoned, and when the Update Manager gathers update information. Data sent: the slugs of your installed plugins and themes (no user data). Endpoints: https://api.wordpress.org/plugins/info/1.2/ and https://api.wordpress.org/themes/info/1.2/ Privacy: https://wordpress.org/about/privacy/ WordPress.org Core Version Check When: the Update Manager checks for available WordPress core updates. Data sent: a standard WordPress core version-check request (no user data). Endpoint: https://api.wordpress.org/core/version-check/1.7/ Privacy: https://wordpress.org/about/privacy/ WordPress.org Core Checksums When: you run the WordPress core file-integrity check. Data sent: your WordPress version and locale, in order to retrieve the official file checksums for comparison. Endpoint: https://api.wordpress.org/core/checksums/1.0/ Privacy: https://wordpress.org/about/privacy/ WordPress.org Secret-Key (Salt) API When: you rotate WordPress security keys and salts, on demand or on a schedule. Data sent: a request for randomly generated salt strings (no site or user data). Endpoint: https://api.wordpress.org/secret-key/1.1/salt/ Privacy: https://wordpress.org/about/privacy/ Cloudflare API When: you connect Cloudflare or preview, deploy, remove or analyse WAF rules. Data sent: your Cloudflare credentials or API token, the selected zone and rule data, and the API requests needed for verification, deployment and analytics. Endpoint: https://api.cloudflare.com/client/v4/ Terms: https://www.cloudflare.com/website-terms/ — Privacy: https://www.cloudflare.com/privacypolicy/ Have I Been Pwned (Pwned Passwords) When: the “refuse compromised passwords” password-policy option is enabled and a password is set or changed. Data sent: the first 5 characters of the SHA-1 hash of the password (a k-anonymity range query). The password itself is never sent. Endpoint: https://api.pwnedpasswords.com/range/ Privacy: https://haveibeenpwned.com/Privacy Feedback and support email When: only when an administrator explicitly submits contact, migration, or deactivation feedback. Choosing “Skip & Deactivate” sends nothing. Data sent: the submitted message or deactivation reason and optional notes. Contact and migration requests also include diagnostic details shown with the form, such as the site URL, WordPress/PHP versions, active theme and plugin count, administrator profile, IP address, user agent, and referrer. Destination: support@wpultimatesecurity.com, delivered through the site’s configured WordPress email service. Privacy: https://www.wpultimatesecurity.com/privacy-policy/