recaptcha


reCAPTCHA


Das reCAPTCHA-Modul prüft Login, Registrierung, Passwort-vergessen und Kommentare mit Googles reCAPTCHA Enterprise auf Bot-Verhalten und blockiert oder protokolliert verdächtige Anfragen anhand eines Score-Schwellwerts.

Allgemein

Score statt Bilderrätsel


Statt sichtbarer Bilderrätsel nutzt das Modul Googles reCAPTCHA Enterprise im Hintergrund: Jede geschützte Formular-Aktion liefert einen Score zwischen 0 und 1, der mit einem einstellbaren Schwellwert verglichen wird (Standard 0,5). Besucher merken im Normalfall nichts davon.

Vier schützbare Formulare


Einzeln zuschaltbar: Login, Registrierung, Passwort vergessen und Kommentare. Bei einer Unterschreitung des Schwellwerts entscheidet die Einstellung „Aktion bei Fehlschlag“ darüber, ob die Anfrage blockiert (block) oder nur protokolliert wird (log_only), ohne den Nutzer zu stören.

Statistik-Dashboard


Jede Prüfung wird protokolliert und im Dashboard mit Kennzahlen (Gesamt/Durchgelassen/Blockiert/Block-Rate/Ø Score), Zeitverlauf, Score-Verteilung und Aufschlüsselung nach Formular-Typ ausgewertet – filterbar nach Zeitraum, Website und IP-Adresse, inklusive CSV-Export. Alte Log-Einträge werden nach einer konfigurierbaren Aufbewahrungsfrist (Standard 90 Tage) automatisch per täglichem Cronjob gelöscht.

Dateien

modules/recaptcha.php – einzige Datei des Moduls: Einstellungen, Verschlüsselung, Frontend-Integration, Formular-Prüfungen, Logging-Tabelle, Statistik-Dashboard, CSV-Export, Cleanup.

Für Entwickler

Verschlüsselter API-Key


Site Key, API-Key und Projekt-ID für die Google-Cloud-Anbindung werden zentral eingetragen; der API-Key wird wie beim E-Mail-Versand-Modul mit AES-256-CBC verschlüsselt gespeichert (Schlüssel aus dem WordPress-AUTH_KEY abgeleitet). Ein Test-Button in den Einstellungen prüft die Zugangsdaten direkt gegen Google, ohne einen echten Seitenaufruf zu benötigen.

Fail-Open bei Google-Ausfall


weinhold_recaptcha_verify() ruft die reCAPTCHA-Enterprise-API auf und liefert Score sowie Ergebnis zurück. Ist Google nicht erreichbar, gilt die Prüfung als bestanden (fail-open) statt alle Nutzer auszusperren – bewusste Entscheidung gegen einen kompletten Login-Ausfall bei einem Google-seitigen Problem. Debug-Informationen zum letzten Aufruf werden eine Stunde als Transient für die Fehlersuche vorgehalten.

Login-Prüfung ohne Security-Manager-Zählung


Die Login-Prüfung hängt bewusst am Hook login_init statt am späteren wp_authenticate_user – dadurch feuert bei einem fehlgeschlagenen reCAPTCHA-Score niemals der Hook wp_login_failed, und das Security-Manager-Modul zählt reCAPTCHA-Fehlschläge folglich nicht als fehlgeschlagenen Login-Versuch für seine eigene Sperrlogik.

Automatische Formular-Erkennung


Das eingebundene JavaScript erkennt Login- (Felder log/pwd), Registrierungs- und Passwort-vergessen-Formulare automatisch anhand ihrer Standard-Feldnamen und erzeugt beim Laden proaktiv ein Token. Eigene Formulare lassen sich zusätzlich über das Attribut data-wf-recaptcha einbinden.

Besonderheiten

Obwohl der Modul-Header Scope: site trägt (also pro Website aktivierbar ist), gibt es keine site-spezifischen Einstellungen mehr – Site Key, API-Key, Schwellwert und alle Schutz-Schalter sind ausschließlich netzwerkweit konfigurierbar. weinhold_recaptcha_cleanup() hat entsprechend nichts mehr zu bereinigen, nur der Netzwerk-Cleanup entfernt die globale Konfiguration und die Log-Tabelle.

Fail-Open bedeutet: Ist die Google-API nicht erreichbar, lässt das Modul Anfragen lieber durch als Nutzer komplett auszusperren – Verfügbarkeit hat hier bewusst Vorrang vor lückenloser Bot-Abwehr.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.