CaptchaFox Extension für TYPO3

Sie können die Formulare Ihrer TYPO3-Website mit der offiziellen CaptchaFox-Extension schützen. Sie ergänzt das TYPO3-Formular-Framework (EXT:form) um ein Element „CaptchaFox“ und prüft die Antwort auf dem Server, bevor das Formular angenommen wird.

Anforderungen

TYPO3Extension-VersionPHP
14.3 oder neuer14.x8.2 oder neuer
12.4 LTS und 13.4 LTS12.x8.1 oder neuer
10.4.11+ und 11.5.7+10.x (nur Sicherheitsfixes)7.4 oder neuer

Installation

  1. Installieren Sie die Extension mit Composer oder aus dem TYPO3 Extension Repository. Composer wählt die Version, die zu Ihrer TYPO3-Version passt:
    composer require captchafox/captchafox-typo3
  2. Kopieren Sie im CaptchaFox-Portal den Site Key Ihrer Website (Sites) und den Secret Key Ihrer Organisation (Organization Settings).
  3. Tragen Sie beide Schlüssel unter Verwaltungswerkzeuge > Einstellungen > Extension Configuration > captchafox_official ein (TYPO3 14: System > Einstellungen > Extension Configuration).
  4. Fügen Sie das Element CaptchaFox im Formular-Editor zu Ihren Formularen hinzu.
  5. Alles ist eingerichtet. Ihre Formulare sind jetzt geschützt!

Ein statisches Template muss nicht eingebunden werden. Bis zu den Versionen 10.0.2 und 12.0.1 war das statische Template „CaptchaFox-Typo3“ nötig; eine bestehende Einbindung schadet nicht.

Konfiguration

OptionStandardBeschreibung
site_keyöffentlicher TestschlüsselSite Key aus dem CaptchaFox-Portal (Sites)
secret_keyöffentlicher TestschlüsselSecret Key Ihrer CaptchaFox-Organisation
langleer (10.x: de)Sprachcode des Widgets, z. B. de. Leer: die Sprache der aktuellen Site-Sprache (10.x: die Browsersprache)
apiUnavailableallowWenn CaptchaFox keine verwertbare Antwort liefert (Netzwerkfehler, Timeout nach 5 Sekunden, Serverfehler): allow lässt das Formular durch, block lehnt es ab. Antworten, die CaptchaFox ablehnt, werden immer abgelehnt. Beide Fälle werden ins TYPO3-Log geschrieben.
robotModeausSchaltet CaptchaFox für alle Besucher ab, nur für automatisierte Tests. Niemals auf einer Live-Website aktivieren.
enforceCaptchaausOhne diese Option wird CaptchaFox im Development-Kontext von TYPO3 weder angezeigt noch geprüft.
⚠️

Die Standardschlüssel sind die öffentlichen Testschlüssel: Das Widget zeigt „For testing purposes only.“, und nichts ist geschützt, bis Sie Ihre eigenen Schlüssel eintragen.

Mehrere Sites (Multi-Domain)

Ab den Versionen 12.1.0 und 14.0.0 (TYPO3 12 oder neuer) kann jede Site einer Installation eigene Schlüssel verwenden. Site-Einstellungen überschreiben die Extension-Konfiguration; jeder Wert, den eine Site nicht setzt, fällt auf sie zurück. Meist unterscheidet sich nur der Site Key, weil der Secret Key zur CaptchaFox-Organisation gehört.

config/sites/<site>/settings.yaml:

captchafox:
  siteKey: 'sk_…'
  # Nur wenn diese Site zu einer anderen CaptchaFox-Organisation gehört. Secrets nicht versionieren:
  secretKey: '%env(CAPTCHAFOX_SECRET_KEY_EXAMPLE_COM)%'

Ab TYPO3 13 lassen sich beide Werte auch im Backend bearbeiten: Fügen Sie der Site das Set „CaptchaFox“ (captchafox/captchafox) hinzu und öffnen Sie Seitenverwaltung > Einstellungen (TYPO3 13) bzw. Websites > Site-Einstellungen bearbeiten (TYPO3 14). Der Editor zeigt den Secret Key im Klartext; der %env()%-Verweis oben vermeidet das.

Nutzung

Fügen Sie das Element CaptchaFox im Formular-Editor zu einem Formular hinzu. Das Element prüft die Antwort immer, auch wenn sein Validator aus der Formulardefinition entfernt wurde. Mehrere Formulare mit CaptchaFox auf einer Seite funktionieren unabhängig voneinander.

Hinweise für den Betrieb

  • Reverse Proxys: Die IP-Adresse des Besuchers wird an CaptchaFox übermittelt. Hinter einem Proxy oder Load Balancer konfigurieren Sie $GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyIP'], sonst wird die Adresse des Proxys übermittelt.
  • Content Security Policy: Sendet Ihre Website eine Content Security Policy, erlauben Sie die unter Content Security Policy aufgeführten Quellen.
  • Das Widget-Skript wird von https://cdn.captchafox.com/api.js geladen; es kann nicht gebündelt oder selbst gehostet werden.