Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Datenschutzfreundlicher Spam-Schutz für Sylius-Storefront-Formulare und die Shop API auf Basis von ALTCHA Proof-of-Work. Keine Cookies, kein Fingerprinting, keine Anfragen an Dritte: Der Browser löst im Hintergrund eine kleine Rechenaufgabe, statt dass Besucher Kacheln anklicken oder verzerrten Text entziffern müssen.
Welche Formulare geschützt werden, legst du im Admin pro Channel fest, nicht global.
Datenschutz: Jede Prüfung läuft auf deinem eigenen Server. Es werden keine Daten an externe Dienste gesendet und weder Cookies noch Fingerprints gesetzt.
Eingebaute Schutzziele sind Registrierung, Kontaktformular, Login, "Passwort vergessen" und der Login im Checkout (dort nur mit Rate-Limit). Das Support-Formular (mmd/sylius-support-form-plugin) und die Newsletter-Anmeldung (mmd/sylius-newsletter-management-plugin) werden automatisch erkannt, sobald diese Plugins installiert sind, und erscheinen in derselben Liste. Jedes andere Formular, egal ob aus einem fremden Plugin oder aus eigenem Code, kannst du im Admin als zusätzliches Schutzziel hinzufügen.
| Seite | Inhalt |
|---|---|
| Installation und Betrieb | Installation, Update, Cronjobs, Deinstallation |
| Konfiguration | Einstellungen pro Channel, Admin-Grids, Praxis-Beispiele |
| Storefront-Integration | Widget einbauen, Twig-Funktion und Hooks, Theme-Hinweise |
| Shop API / Headless | Challenge-Endpunkt, Anfragen, Fehlerformat |
| Erweiterbarkeit und Kompatibilität | Eigene Schutzziele, Service-Tags, Abwärtskompatibilität |
| Fehlerbehebung und FAQ | Typische Probleme, bekannte Einschränkungen, häufige Fragen |
| Technische Details | Ablauf der Prüfungen, Plugin-Struktur, Entities |
| Feature | Beschreibung |
|---|---|
| Proof-of-Work-Challenge | PBKDF2-Aufgabe, die der Browser unsichtbar löst; signiert mit einem eigenen HMAC-Secret pro Channel |
| Einmalig verwendbare Lösungen | Eine gelöste Challenge wird genau einmal akzeptiert (Replay-Schutz) |
| Rate-Limiting | Pro Formular und Client-Adresse, geprüft bevor eine Challenge verbraucht wird |
| Honeypot-Feld | Unsichtbares Feld, das nur Bots ausfüllen |
| Mindest-Ausfüllzeit | Ein signierter Zeitstempel lehnt Absendungen ab, die schneller eintreffen, als ein Mensch tippen kann |
| Wegwerf-E-Mail-Prüfung | Optional: lehnt Adressen bekannter Wegwerf-Anbieter ab; Ausnahmen und Ergänzungen pflegst du selbst |
| Gibberish-Prüfung | Optional: bewertet Freitextfelder und lehnt zufällige Tastenfolgen und Unsinnstext ab |
| Dual-Mode | Funktioniert im Twig-Storefront und headless über die Shop API auf dieselbe Weise |
| Konfiguration pro Channel | Alle Einstellungen (Schutzziele, Schwierigkeit, Rate-Limit, Inhaltsprüfungen) gelten für genau einen Channel |
| Anforderung | Version | Hinweise |
|---|---|---|
| Sylius | ^2.2 | Entwickelt gegen 2.3; die CI führt die komplette Testsuite auf Sylius 2.2 und 2.3 aus |
| PHP | ^8.3 | Mit der Extension sodium |
| Symfony | ^7.4 | Symfony 8 wird von Sylius 2.x nicht unterstützt und ist deshalb ausgeschlossen |
| Datenbank | MySQL 8 oder MariaDB | PostgreSQL wird nicht unterstützt. Die Migrationen sind in MySQL-Syntax geschrieben und brechen auf anderen Datenbanken bewusst ab. Installiere das Plugin deshalb nicht in einem Projekt auf PostgreSQL, denn der Abbruch würde auch alle folgenden Migrationen deines Projekts blockieren. Getestet wird gegen MySQL 8.4, MariaDB ist nicht verifiziert. |
APP_SECRET |
nicht leer | Die Channel-Secrets werden mit einem daraus abgeleiteten Schlüssel verschlüsselt; alle Anwendungsserver müssen denselben Wert verwenden |
doctrine/dbal |
^3.9 oder ^4.0 | Sylius 2.2 verlangt DBAL 3, Sylius 2.3 erlaubt 4; beide laufen durch die komplette Testsuite |
altcha-org/altcha |
~2.1.0 | Fest gepinnt, weil das mitgelieferte Widget-Script und diese Library dasselbe Protokoll sprechen |
Kommerzielle Lizenz: Eine Lizenz gilt für eine Sylius-Installation (alle Channels sowie deren Entwicklungs- und Staging-Umgebungen). Eine Weitergabe ist nicht erlaubt, Updates sind 12 Monate ab Kauf enthalten. Die mitgelieferten ALTCHA-Widget-Scripts und die Wegwerf-Domain-Liste behalten ihre eigenen Lizenzen (MIT bzw. CC0).
Bei Fragen zur Lizenz, technischen Fragen oder Fehlern erreichst du mich unter support@markus-michalski.net.