Markus Michalski FAQ

ALTCHA: API

ALTCHA Spam-Schutz für Shopware 6.7 - Challenge-Endpunkt der Storefront mit Antwortformat und Statuscodes sowie der Admin-Endpunkt für die Ansicht der blockierten Domains

English Version

Zurück zur Übersicht

ALTCHA Spam-Schutz: API

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

Das Plugin stellt zwei Endpunkte bereit. Beide sind für die interne Nutzung durch Widget und Admin gedacht.

Challenge-Endpunkt (Storefront)

GET /altcha/challenge (Route frontend.altcha.challenge, Scope Storefront, AJAX) liefert dem Widget eine neue, signierte Challenge.

Antwort 200:

{
    "parameters": {
        "algorithm": "PBKDF2",
        "cost": 2000,
        "expiresAt": 1735999999,
        "keyLength": 32,
        "keyPrefix": "...",
        "nonce": "...",
        "salt": "..."
    },
    "signature": "..."
}
Status Bedeutung
200 Challenge ausgestellt
503 Spam-Schutz oder ALTCHA-Widget sind für den Verkaufskanal deaktiviert ({"error": "ALTCHA is disabled"})
429 Challenge-Rate-Limit überschritten, mit Header Retry-After in Sekunden ({"error": "Too many requests"})
500 APP_SECRET ist leer, die Challenge kann nicht signiert werden

Kosten, Zähler und Gültigkeit der Challenge stammen aus den Einstellungen des Verkaufskanals, siehe Konfiguration.

Lösung mitsenden

Das Widget schreibt die gelöste Challenge Base64-codiert in das Formularfeld altcha. Der Shop prüft sie beim Absenden: Signatur, Ablaufzeit, Algorithmus (nur PBKDF2) und Einmaligkeit der Nonce. Eine Payload über 4096 Zeichen wird abgelehnt.

Admin-Endpunkt: blockierte Domains

GET /api/_action/mmd-altcha/blocked-domains (Route api.action.mmd-altcha.blocked-domains, Scope API) versorgt die Ansicht "Blockierte Domains" in der Plugin-Konfiguration. Die Route verlangt die ACL-Berechtigung system_config:read.

Parameter Beschreibung
q Suchbegriff, optional, höchstens 253 Zeichen (Rest wird abgeschnitten)
page Seite, Standard 1
limit Einträge pro Seite, Standard 25, höchstens 100
salesChannelId Verkaufskanal als UUID, optional. Eine ungültige UUID ergibt 400 mit {"error": "Invalid sales channel ID"}

Die Antwort enthält items (je Eintrag domain, source mit snapshot oder override, allowed), total, page und perPage. Eigene Einträge stehen zuerst, der Rest alphabetisch.