ALTCHA
WP-ImmoMakler prend en charge la protection anti-spam respectueuse de la vie privée ALTCHA. Elle est chargée entièrement depuis votre propre serveur WordPress, sans connexion à des tiers ni cookies.
Fonctionnement
Section intitulée « Fonctionnement »ALTCHA soumet au navigateur de votre visiteur un calcul automatisé à effectuer (une preuve de travail, ou proof of work). Le navigateur le résout en arrière-plan dès que la page est chargée, pendant que votre visiteur remplit le formulaire. Seul un petit champ confirmant la réussite de la vérification est visible :
Vos visiteurs n’ont donc aucun puzzle à résoudre et rien à cliquer. Pour un robot spammeur qui envoie des formulaires en masse, l’effort de calcul se cumule en revanche jusqu’à devenir un véritable obstacle.
Le serveur vérifie ensuite si la solution soumise correspond bien à un calcul qu’il a lui-même émis. Chaque calcul n’est valable qu’une seule fois et pendant une durée limitée.
Configuration
Section intitulée « Configuration »ALTCHA est activé par défaut : vous n’avez rien à configurer. Vous trouverez la sélection dans le backend de votre site web (wp-admin) sous WP-ImmoMakler → Paramètres → Protection anti-spam → Niveau 2 : fournisseur de CAPTCHA, au cas où vous souhaiteriez choisir à la place un autre fournisseur ou « Aucun CAPTCHA (niveau 1 uniquement) ». Aucun autre réglage ni compte externe n’est nécessaire, contrairement aux CAPTCHAs hébergés en externe, qui exigent tous un sitekey et un secret key.
Le réglage s’applique à tous les formulaires du plugin :
- le formulaire de contact dans la vue détaillée du bien
- le formulaire d’alerte de recherche
- le formulaire de rétractation
- le formulaire de profil de recherche Propstack et l’inscription à la newsletter Propstack
Protection des données
Section intitulée « Protection des données »- Le calcul est généré et vérifié par votre propre serveur. Il n’y a aucune connexion à des serveurs tiers.
- Aucun cookie n’est déposé.
- Aucune donnée comportementale de vos visiteurs (mouvements de souris, frappes au clavier) n’est collectée.
- Seule la solution du calcul est transmise : une valeur numérique aléatoire accompagnée d’une somme de contrôle.
La mention « Protégé par ALTCHA » dans le champ est un simple lien texte vers altcha.org. Elle ne charge aucun contenu depuis ce site.
Détails techniques
Section intitulée « Détails techniques »Point de terminaison de l’API REST
Section intitulée « Point de terminaison de l’API REST »Le navigateur récupère le calcul via un point de terminaison de l’API REST de WordPress :
GET /wp-json/immomakler/v1/altcha/challengeLa réponse n’est volontairement pas mise en cache (Cache-Control: no-store), car chaque calcul n’est valable qu’une seule fois.
Procédé de calcul et valeurs par défaut
Section intitulée « Procédé de calcul et valeurs par défaut »WP-ImmoMakler choisit le procédé de calcul en fonction des possibilités de votre serveur :
- Argon2id, si l’extension PHP
sodiumest chargée — ce qui est le cas chez presque tous les hébergeurs. Argon2id est gourmand en mémoire : chaque étape de calcul occupe 64 Mo de mémoire vive. Pour le navigateur de votre visiteur, cela est négligeable, mais cela empêche un robot spammeur de se rabattre sur des cartes graphiques, qui résoudraient sinon des milliers de calculs simultanément. - PBKDF2/SHA-256 dans le cas contraire. Il ne nécessite aucune extension ni de mémoire notable, mais se calcule nettement plus vite sur des cartes graphiques que dans un navigateur.
Les deux valeurs par défaut correspondent à la recommandation d’ALTCHA pour le procédé concerné :
| Paramètre | Argon2id | PBKDF2/SHA-256 | Description |
|---|---|---|---|
algorithm | ARGON2ID | PBKDF2/SHA-256 | Procédé de calcul de la tâche |
Itérations (cost) | 1 | 5 000 | Effort par étape de calcul |
Mémoire (memory_cost) | 65 536 Kio (64 Mo) | – | Mémoire par étape de calcul |
Étapes de calcul (counter) | 100–200 | 5 000–10 000 | Nombre d’étapes jusqu’à la solution |
| Validité | 30 minutes | 30 minutes | Le calcul expire ensuite |
| Réutilisation | impossible | impossible | Chaque calcul résolu ne vaut que pour un seul envoi |
Sur un ordinateur de bureau, le calcul est résolu avec l’un ou l’autre procédé en deux à trois secondes environ ; sur un smartphone de milieu de gamme, en dix secondes environ. Comme le calcul démarre au chargement de la page, il est en pratique terminé avant que le formulaire ne soit entièrement rempli. Un bot doit résoudre le même calcul à nouveau pour chaque envoi et paie donc le même temps de calcul par envoi.
Le moteur de calcul Argon2id est chargé comme un fichier séparé depuis le répertoire du plugin (vendors/altcha/workers/argon2id.js). Si la mémoire de votre serveur est insuffisante pour qu’Argon2id puisse y être calculé, WP-ImmoMakler émet automatiquement le calcul concerné avec PBKDF2 et le note dans le journal.
Ajuster la difficulté
Section intitulée « Ajuster la difficulté »Si vous recevez encore du spam malgré ALTCHA activé, vous pouvez augmenter l’effort de calcul via un filtre. Le filtre reçoit les valeurs par défaut du procédé utilisé par votre serveur ; l’exemple suivant double l’effort pour les deux. Notez que le temps d’attente sur les appareils peu puissants augmente également.
add_filter( 'immomakler_altcha_challenge_options', function ( $options ) { $options['counter_min'] *= 2; $options['counter_max'] *= 2; return $options;} );Augmentez les étapes de calcul (counter) plutôt que les itérations (cost) ou la mémoire (memory_cost) : l’effort pour le navigateur est dans tous les cas le produit des valeurs, mais les itérations et la mémoire déterminent en plus le temps que met votre serveur à générer et à vérifier chaque calcul.
Ce même filtre permet également de définir le procédé. Cela est nécessaire si le moteur de calcul Argon2id ne peut pas être chargé dans votre configuration — par exemple parce qu’une extension d’optimisation ou un CDN délivre les fichiers du répertoire du plugin depuis un autre domaine :
add_filter( 'immomakler_altcha_challenge_options', function ( $options ) { $options['algorithm'] = 'PBKDF2/SHA-256'; return $options;} );Si le filtre indique un procédé que votre serveur ne prend pas en charge, le filtre est ignoré dans son intégralité — ses étapes de calcul seraient bien trop faibles ou trop lentes pour l’autre procédé.
Filtre du formulaire
Section intitulée « Filtre du formulaire »La protection anti-spam s’intègre dans la validation du formulaire de contact via le filtre suivant :
// Ajouter votre propre logique de validationadd_filter( 'immomakler_contact_form_errors_in_send', function( $errors ) { // $errors['mon_erreur'] = true; return $errors;} );Le message d’erreur affiché en cas d’échec de la vérification peut être personnalisé :
add_filter( 'immomakler_contactform_altcha_validationfailed', function ( $html ) { return '<div class="alert alert-danger" role="alert">Veuillez réessayer.</div>';} );