API de Défis PoW
Utilisez l’API de Défis en conjonction avec le Widget ALTCHA pour générer et valider des défis cryptographiques.
L’API offre plusieurs avantages par rapport à la vérification de défis auto-hébergée:
- Intégration simplifiée avec n’importe quel back-end ou CMS.
- Mesures de sécurité supplémentaires telles que l’expiration des défis et la protection contre la réutilisation.
- Possibilité d’utiliser le Filtre Anti-Spam directement depuis le widget, permettant la classification des données avant leur soumission à votre serveur.
- Aucune demande d’API n’est émise depuis votre serveur ; tout est vérifié de manière cryptographique, réduisant la latence et éliminant les problèmes potentiels liés au réseau.
Autorisation
L’accès à l’API nécessite une Clé API. Consultez l’autorisation de l’API.
Utilisation avec le Widget
Pour utiliser l’API avec le widget ALTCHA, configurez l’attribut challengeurl
et n’oubliez pas d’inclure votre clé API dans l’URL :
Activer le Filtre Anti-Spam
L’API permet également la classification automatique des données pour le spam en utilisant le Filtre Anti-Spam. Pour activer le Filtre Anti-Spam, ajoutez l’attribut spamfilter
au widget (nécessite la version 0.3+
):
Avec le Filtre Anti-Spam activé, la vérification soumettra automatiquement les champs textuels du formulaire ainsi que les adresses e-mail détectées et renverra un résultat de classification.
Pour traiter la classification sur votre site web, utilisez l’événement serververification
du widget. Une version limitée de la classification est également incluse dans le nouveau payload
soumis à votre serveur.
Important
Utiliser l’API d’ALTCHA en tant que challengeurl
avec spamfilter
modifie le processus de vérification sur le serveur. Veuillez vous référer à la vérification du serveur.
Vérification du Serveur
Lors de l’utilisation de l’API d’ALTCHA avec spamfilter
, le payload
reçu sur votre serveur a un format différent de celui généré par le widget.
Vous recevrez une chaîne encodée en base64 contenant un objet encodé en JSON :
Propriétés du payload :
algorithm
- L’algorithme utilisé pour la signature HMAC.signature
Signature HMAC desverificationData
.verificationData
- Données de vérification et classification encodées en URL.time
- Horodatage de la vérification en secondes.verified
- Si la solution a été vérifiée avec succès.- Avec
spamfilter
activé (voir Réponse du Filtre Anti-Spam):classification
- Classification du Filtre Anti-Spam.email
- E-mail soumis.expire
- Durée d’expiration en secondes.fields
- Tableau de noms de champ soumis.fieldsHash
- Hash SHA des valeurs de champ.ipAddress
- L’adresse IP de l’utilisateur.reasons
- Tableau de raisons.score
- Score de classification global.
verified
- Si la solution a été vérifiée avec succès.
Vérification de la Signature
Pour vérifier que le client a été vérifié, vérifiez la signature reçue dans le payload :
- Calculez un hash SHA des
verificationData
(en utilisant l’algorithm
). - Calculez une signature HMAC avec le même
algorithm
, où lahmac_key
est la partie secrète de votre clé API (c’est-à-direcsec_...
).
Exemple de pseudo-code utilisant l’algorithme SHA-256
:
Le payload est considéré comme vérifié si la signature calculée est égale à la propriété signature
du payload. Il est également conseillé de vérifier les données soumises, comme indiqué dans la section Vérification des Champs ci-dessous.
Alternativement, si vous ne pouvez pas vérifier la signature de manière cryptographique, utilisez l’endpoint de vérification de la signature du serveur.
Vérification des Champs
Si vous utilisez le Filtre Anti-Spam, verificationData
inclura des propriétés supplémentaires : fields
et fieldsHash
. Ces propriétés vous permettent de valider l’exactitude des données classées. Cette étape de vérification garantit que l’utilisateur n’a pas altéré les données soumises depuis leur validation par le Filtre Anti-Spam.
Pour vérifier le hash des champs, concaténez les valeurs des champs avec \n
(nouvelle ligne) et calculez le hash SHA (en utilisant l’algorithm
spécifié). Par exemple, si fields = field1,field2,field3
:
Assurez-vous que les valeurs sont triées dans l’ordre où elles apparaissent dans la propriété fields
.
Les données sont considérées comme correctes si le hash calculé correspond au fieldsHash
.
Points de Terminaison de l’API
Si vous préférez utiliser l’API directement, sans le widget, utilisez les points de terminaison suivants. N’oubliez pas que l’en-tête Referer
doit toujours être présent et doit contenir l’origine (domaine) de votre site web.
Création d’un Nouveau Défi
GET /api/v1/challenge
- Référence de l’API
Vérification de la Solution
POST /api/v1/challenge/verify
- Référence de l’API
Validation de la Signature du Serveur
Cet endpoint sert de manière alternative à la vérification de la signature du serveur reçue depuis /api/v1/challenge/verify
. La vérification cryptographique est recommandée.
POST /api/v1/challenge/verify_server_signature
- Référence de l’API