English Version
Zurück zur Übersicht
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
- Symptom: Die "Ich bin kein Roboter"-Checkbox erscheint nicht im Formular.
- Prüfung: Sind Spam-Schutz aktivieren und ALTCHA-Widget aktivieren an? Bei Newsletter und Registrierung auch der jeweilige Formular-Schalter? Hat ein eigenes Theme den Captcha-Block ohne
{{ parent() }} überschrieben (siehe Storefront-Integration)? Zeigt die Browser-Konsole JavaScript-Fehler?
- Lösung: Einstellungen korrigieren,
bin/console cache:clear ausführen, im Theme-Override parent() ergänzen. Nach einem Update zusätzlich HTTP-Cache, Varnish und CDN leeren, siehe Installation.
- Symptom: Beim Absenden erscheint Shopwares allgemeine Fehlerseite statt eines Hinweises am Formular.
- Prüfung: Das ist für die meisten Ablehnungsgründe erwartetes Verhalten. Sie bleiben absichtlich vage, damit ein Bot nicht erfährt, welche Schicht ihn gestoppt hat. Den Grund (
reason) zeigt das Shopware-Log, siehe Technische Details.
- Lösung: Nur eine blockierte Wegwerf-E-Mail-Adresse zeigt eine konkrete Meldung am E-Mail-Feld. Bei jedem anderen Grund prüfst du das Log und justierst die betroffene Schicht in der Konfiguration nach.
- Symptom: Legitime Besucher können das Formular nicht absenden.
- Prüfung: Im Log den
reason der Ablehnung nachsehen.
- Lösung: Je nach Grund:
gibberish: Ablehnungsschwelle erhöhen oder vorübergehend auf 101 setzen (nur beobachten)
disposable_email: Domain unter "Immer erlaubte Domains" eintragen
too_fast: Mindest-Ausfüllzeit senken oder auf 0 setzen
rate_limited: Max. Anfragen erhöhen oder Zeitfenster vergrößern
content_validation_failed: veraltete Inhaltsvalidierung abschalten oder Gibberish-Erkennung beziehungsweise Wegwerf-E-Mail-Prüfung einschalten, die sie ersetzt
altcha_failed oder altcha_missing: siehe die nächsten Abschnitte
- Symptom: Schon die ersten Absendungen verschiedener Besucher werden mit
rate_limited abgelehnt, oder der Challenge-Endpunkt antwortet früh mit 429.
- Prüfung: Steht der Shop hinter einem Reverse Proxy oder CDN? Dann sieht er unter Umständen nur die Adresse des Proxys, und alle Besucher teilen sich ein Limit.
- Lösung: Die vertrauenswürdigen Proxys in Symfony konfigurieren, damit die echte Besucher-IP ankommt. Als Übergang kannst du das Limit anheben.
- Symptom: Die Absendung wird mit
altcha_failed abgelehnt.
- Prüfung: Ist die Challenge abgelaufen (Standard 5 Minuten)? Wurde die Seite sehr lange offen gelassen? Wurde dieselbe Lösung zweimal gesendet (Replay-Schutz)? Hat sich
APP_SECRET geändert, während Seiten offen waren?
- Lösung: Seite neu laden und das Formular erneut absenden. Bei häufigem Auftreten die Challenge-Gültigkeit erhöhen.
- Symptom: Im Log steht
altcha_missing.
- Prüfung: Das Formular wurde ohne Widget abgeschickt: Theme-Override ohne
parent(), gecachte Seite aus der Zeit vor einem Update, JavaScript im Browser blockiert.
- Lösung: Override und Caches prüfen, siehe oben.
- Symptom:
/altcha/challenge liefert 500, oder Seiten mit Formular lassen sich nicht rendern.
- Prüfung: Ist die Umgebungsvariable
APP_SECRET gesetzt und nicht leer?
- Lösung:
APP_SECRET setzen, Cache leeren.
- Symptom:
mmd_altcha_rate_limit_log wird immer größer.
- Prüfung: Läuft der Message Worker?
bin/console messenger:consume scheduled_task
- Lösung: Worker starten oder manuell aufräumen:
bin/console scheduled-task:run mmd_altcha.rate_limit_cleanup
- Symptom: Neue Wegwerf-Domains aus der Upstream-Liste fehlen.
- Prüfung: Ist Wegwerf-E-Mail-Adressen ablehnen nur für einen einzelnen Verkaufskanal aktiv statt global? Der wöchentliche Task läuft nur bei globaler Aktivierung. Kann der Server
raw.githubusercontent.com erreichen?
- Lösung:
bin/console mmd:altcha:update-disposable-domains ausführen, bei mehreren App-Knoten auf jedem einzeln.
¶ Die Ansicht "Blockierte Domains" bleibt leer oder lädt nicht
- Symptom: Die durchsuchbare Liste unter "Wegwerf-E-Mail-Adressen" zeigt nichts oder eine Fehlermeldung.
- Prüfung: Hat der angemeldete Admin-Benutzer die Berechtigung, die Systemkonfiguration zu lesen?
- Lösung: Berechtigung in der Benutzerrolle ergänzen.
bin/console plugin:refresh
bin/console plugin:deactivate MmdAltchaIntegration
bin/console cache:clear
bin/console plugin:activate MmdAltchaIntegration
bin/console cache:clear
- Die Mindest-Ausfüllzeit greift auf HTTP-zwischengespeicherten CMS-Seiten (Kontakt, Newsletter) nicht zuverlässig: Ein Bot, der eine gecachte Seite abgreift, kann einen alten, aber gültigen Token mitschicken. Honeypot, ALTCHA und Rate Limit greifen trotzdem.
- Die Trigramm-Tabelle der Gibberish-Erkennung deckt Deutsch, Englisch, Französisch, Spanisch, Italienisch und Niederländisch ab. Text in anderen Sprachen, etwa Polnisch oder Ungarisch, kann hoch scoren, ebenso Lacher wie "hahahaha". Groß geschriebene Namen und kurze Wörter lösen allein nur selten eine Ablehnung aus, ein langes, klein geschriebenes Wort aus unmöglichen Buchstabenfolgen dagegen schon.
- Die Wegwerf-E-Mail-Liste ist ein Snapshot und erfasst nie jede Wegwerf-Domain. Der Abgleich läuft über die Domain und ihre Elterndomains, nicht über eine Public-Suffix-Liste.
- Das Rate Limit zählt nur Absendungen, die alle vorherigen Prüfungen bestanden haben. Es ist eine Datenbankabfrage mit anschließendem Eintrag, bei vielen gleichzeitigen Anfragen derselben IP kann das Limit knapp überschritten werden.
- Ist
APP_SECRET leer, lehnt das Plugin Lösungen ab. Der Challenge-Endpunkt antwortet dann mit HTTP 500, und Seiten mit dem Token-Feld der Mindest-Ausfüllzeit laufen in einen Fehler.
Werden Daten an Dritte gesendet?
Bei der Formularprüfung nicht. Nur die Wegwerf-Domain-Liste wird per Task oder Befehl vom Server abgerufen, ohne Besucherdaten. Siehe Datenschutz.
Setzt das Plugin Cookies?
Nein. Das Widget wird ohne die optionale Cookie-Funktion eingesetzt.
Warum hat das Kontaktformular keinen eigenen Schalter?
Das Kontaktformular ist geschützt, sobald "Spam-Schutz aktivieren" an ist. Einen zusätzlichen Schalter gibt es nicht.
Kann ich Schichten pro Verkaufskanal unterschiedlich einstellen?
Ja, jede Einstellung ist pro Verkaufskanal überschreibbar. Die Aktualisierung der Wegwerf-Liste prüft den Schalter nur global.
Mit welchen Shopware-Versionen läuft das Plugin?
Mit Shopware ~6.7.0, siehe Übersicht.