Zusammenfassung: ALTCHA Serverintegration
Diese Anleitung bietet einen knappen Überblick über die Integration von ALTCHA auf Ihrem Server und umfasst beide Modi: mit und ohne Spamfilter. Durch Befolgen dieser Schritte stellen Sie eine sichere und effiziente Überprüfung von Benutzereingaben sicher, egal ob Sie eine grundlegende Herausforderungsprüfung oder eine erweiterte Spamfilterung benötigen.
Für eine einfache Integration empfehlen wir die Verwendung der offiziellen Bibliotheken:
Setup-Übersicht
-
Abrufen der Herausforderung:
- Der Client lädt eine Herausforderung mithilfe des ALTCHA-Widgets herunter.
-
Herausforderung lösen:
- Der Client löst die Herausforderung.
-
Lösung übermitteln:
- Lösung und Benutzerdaten werden an den Server übermittelt.
-
Überprüfung auf dem Server:
- Der Server validiert die Lösung und überprüft bei Verwendung des Spamfilters die Spamklassifizierung.
Ohne Spamfilter
Vollständige Dokumentation: Serverintegration
Erstellen einer Herausforderung (Serverseitig)
- Parameter generieren:
maxnumber
: Maximale Zufallszahl (passt die Schwierigkeit an).salt
: Zufälliger String (≥10 Zeichen).secret_number
: Zufällige Ganzzahl (0…maxnumber).challenge
: SHA-256-Hash vonsalt + secret_number
.signature
: HMAC-SHA-256 vonchallenge
mit einem geheimen Schlüssel.
Lösung validieren (Serverseitig)
-
Payload entschlüsseln:
- Extrahieren Sie
algorithm
,challenge
,concat
,salt
,signature
aus Base64-JSON-Payload.
- Extrahieren Sie
-
Validierungsschritte:
alg_ok
: Prüfen, ob der Algorithmus ‘SHA-256’ ist.challenge_ok
: Überprüfen, obchallenge
mitsha2_hex(concat(salt, concat))
übereinstimmt.signature_ok
: Überprüfen, obsignature
mithmac_sha2_hex(challenge, hmac_key)
übereinstimmt.
Mit Spamfilter
Vollständige Dokumentation: Serverintegration
Verwendung der API mit dem Widget
- Widget-Konfiguration:
- Setzen Sie
challengeurl
mit Ihrem API-Schlüssel. - Aktivieren Sie
spamfilter
für die Spamklassifizierung.
- Setzen Sie
Serververifizierung
- Payload-Format:
- Sie erhalten ein Base64-codiertes JSON-Objekt mit den Eigenschaften
algorithm
,signature
,verificationData
undverified
.
- Sie erhalten ein Base64-codiertes JSON-Objekt mit den Eigenschaften
Überprüfen der Signatur
- Berechnen Sie den SHA-Hash von
verificationData
. - Berechnen Sie die HMAC-Signatur mit dem geheimen Teil Ihres API-Schlüssels.
Beispiel-Pseudocode:
- Überprüfung:
- Der Payload wird überprüft, wenn die berechnete Signatur mit der
signature
-Eigenschaft übereinstimmt.
- Der Payload wird überprüft, wenn die berechnete Signatur mit der
Überprüfen von Feldern (Spamfilter)
- Überprüfen von
fields
undfieldsHash
:- Verketten Sie Feldwerte mit
\n
und berechnen Sie den SHA-Hash.
- Verketten Sie Feldwerte mit
Beispiel-Pseudocode:
- Validierung:
- Die Daten sind korrekt, wenn der berechnete Hash mit dem
fieldsHash
übereinstimmt.
- Die Daten sind korrekt, wenn der berechnete Hash mit dem
Beispielcode
- Node.js Beispiel:
Sicherheitsempfehlungen
-
Wiederholungsangriffe verhindern:
- Ungültige gelöste Herausforderungen.
-
Ablauf der Herausforderung:
- Fügen Sie einen Zeitstempel in das
salt
ein, um die Gültigkeitsdauer zu begrenzen. - Verwenden Sie
salt = '<zufälliger_salt>?abläuft=<unix_ts>'
.
- Fügen Sie einen Zeitstempel in das
API-Endpunkte
-
Erstellen einer neuen Herausforderung:
GET /api/v1/challenge
-
Lösung überprüfen:
POST /api/v1/challenge/verify
-
Validieren der Server-Signatur:
POST /api/v1/challenge/verify_server_signature