Prévenir des soumissions non sollicitées en masse sur son site Drupal 9 (ou Drupal 8)

storm troopers

Plusieurs solutions anti-spam existent sur Drupal pour prévenir les soumissions de formulaires (contact, abonnement newsletter, etc.) par des robots plus ou moins bien intentionnés. Sans vouloir être exhaustif, nous pouvons utiliser les modules Honeypot et Antibot qui fournissent des mécanismes de défense (différents) non intrusifs, ou encore les modules captcha ou recaptcha qui demandent au visiteur de répondre à différents challenges avant de lui permettre de soumettre le formulaire.

Mais ces modules anti-spam ne sont pas infaillibles et certains robots peuvent parfois passer outre leur mécanisme de protection. Et peuvent alors transformer votre site en relais de courriel non sollicité, via votre formulaire de contact par exemple qui va envoyer un mail de confirmation au mail saisi sur le formulaire. Et c'est ainsi que dans le pire des cas votre site peut se mettre à envoyer des milliers de mail par heure pour des publicités diverses ou variées, jusqu'à ce que votre hébergeur vous annonce qu'il a bloqué votre serveur.

Pour éviter ce genre de situation, et se retrouver avec un nom de domaine mis en liste noire par les relais de messagerie, nous pouvons utiliser une dernière ligne de défense, derrière les anti-spams activés, qui pourra de façon (presque) certaine bloquer et limiter très fortement ce type d'attaque. Le module Protect Form Flood Control va nous permettre de contrôler le nombre de soumissions autorisées dans une fenêtre de temps définie pour une adresse IP donnée. Et ceci pour n'importe quel formulaire d'un site.

Son fonctionnement est assez simple et consiste à appliquer, sur tous les formulaires disponibles, le même système de protection que Drupal Core utilise pour les formulaires liés à l'authentification sur un site Drupal afin de contrer des attaques par Brute force sur les mots de passe.

Une fois le module activé, sa configuration peut se faire rapidement de façon générale, avec la possibilité d'affiner certains paramètres de contrôle (le seuil et la fenêtre de temps) formulaire par formulaire.

Protect Form Flood Control Settings

Vous pouvez configurer les paramètres suivants :

Protéger tous les formulaires

Lorsque cette option est activée, tous les formulaires sont protégés. Soyez prudent avec cette option, tous les formulaires, y compris tous les formulaires liés à la configuration du site, seront protégés contre les soumissions en masse. Cette option n'est pas recommandée à moins que vous ne mesuriez complètement les implications. Cette option étant activée, il est fortement recommandé de définir les adresses IP des administrateurs en liste blanche, ou de donner la permission "Bypass Protect Form Flood Control" à ces utilisateurs.

Fenêtre

La fenêtre de temps de contrôle des soumissions en masse.

Seuil

Les soumissions de formulaire qui dépassent ce seuil, pendant la fenêtre de temps définie plus haut, pour une adresse IP, seront bloquées.

Identifiants des formulaires protégés

Vous précisez ici les identifiants des formulaires qui doivent être protégés contre les soumissions en masse. Chaque identifiant de formulaire doit figurer sur une ligne séparée. Les caractères joker (*) peuvent être utilisés. Les form_id ou base_form_id peuvent être utilisés.

Identifiants formulaires non protégés

Si l'option Protéger tous les formulaires est cochée, vous pouvez configurer les identifiants de formulaire qui ne doivent PAS être protégés contre les soumissions en masse.

Liste blanche des adresses IP

Vous pouvez définir des adresses IP en liste blanche, adresses IP qui peuvent contourner le contrôle des soumissions en masse..

Journalisation des soumissions bloquées

Lorsque cette option est activée, les soumissions de formulaires bloquées sont enregistrées dans les journaux d'activité.

Paramétrages individuels

Le module permet également de configurer des paramètres de Seuil et de Fenêtre de façon individuelle pour certains formulaires. Les paramètres individuels définis ont alors priorité sur les paramètres généraux et seront appliqués en lieu et place des paramètres généraux

Enfin une option permet de déclencher une fenêtre sur toute page contenant un formulaire qui permet d'afficher leurs identifiants afin de pouvoir configurer plus facilement le module.

Pour conclure, il n'existe pas vraiment de paramétrage idéal. Le bon paramétrage sera à faire en fonction de la typologie des visiteurs du site Drupal. Notamment en prenant en compte le fait que les visiteurs (susceptibles de soumettre un formulaire) proviennent d'un réseau d'entreprise, et donc derrière probablement un proxy, ou non. Etant intervenu en urgence ces six derniers mois, en tant qu'expert Drupal, sur trois projets Drupal ayant subi ce type d'attaque (relais de spam via le formulaire de contact), ce module devrait permettre de réduire considérablement leur ampleur.

 

Ajouter un commentaire