Markus Michalski FAQ

ALTCHA Spam-Schutz

ALTCHA Proof-of-Work-Spamschutz für Sylius-Formulare und die Shop-API - kanalweise konfigurierbare Schutzziele, Honeypot, Rate-Limiting, Wegwerf-E-Mail- und Gibberish-Prüfung

English Version

Zurück zu Sylius Plugins

ALTCHA Spam-Schutz

Sylius
PHP
License

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

Überblick

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 die kleine Rechenaufgabe automatisch beim Absenden, ohne Eingabe des Besuchers, 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.

graph LR
    A["Storefront (Twig-Hook)"] --> C["ALTCHA-Prüfkette"]
    B["Shop API (Header X-Altcha-Payload)"] --> C
    C --> D["Channel-Einstellungen"]
    D --> E{"Ergebnis"}
    E -->|"akzeptiert"| F["Formular / API-Anfrage wird verarbeitet"]
    E -->|"abgelehnt"| G["Formularfehler / HTTP 422"]

Dokumentation

Seite Inhalt
Installation und Betrieb Installation, Update, Cronjobs, Deinstallation
Konfiguration Einstellungen pro Channel, Admin-Grids, Praxis-Beispiele
Inhaltsprüfungen Wegwerf-E-Mail- und Gibberish-Prüfung im Detail: Geltungsbereich, Abgleich, Bewertung, Einführung
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

Features

Feature Beschreibung
Proof-of-Work-Challenge PBKDF2-Aufgabe, die der Browser automatisch beim Absenden löst, ohne Eingabe des Besuchers; 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

Anforderungen

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 (auf DBAL 3 braucht die Spalte target_overrides JSON dort eventuell zusätzlich einen (DC2Type:json)-Kommentar).
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. Auf DBAL 3 tragen die drei DATETIME-Spalten einen (DC2Type:datetime_immutable)-Kommentar. Beim Wechsel auf DBAL 4 (Sylius 2.2 auf 2.3) listet der nächste Schema-Diff deines Hosts diese drei Spalten einmalig auf, wie bei den Sylius-Core-Tabellen; die generierte Migration beseitigt das.
altcha-org/altcha ~2.1.0 Fest gepinnt, weil das mitgelieferte Widget-Script und diese Library dasselbe Protokoll sprechen

Lizenz

License

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).

Support

Bei Fragen zur Lizenz, technischen Fragen oder Fehlern erreichst du mich unter support@markus-michalski.net.