Accueil » Conseils & tutoriels sites internet » Tutos Prestashop » Prestashop : bloquer les spammeurs sur le SAV

Prestashop : bloquer les spammeurs sur le SAV

Posté dans : Blog e-mails, Tutos Prestashop 16

Quoi de pire pour un e-commerçant que de se voir spammer par des emails en provenance de Chine ? Plusieurs boutiques sont impactées par ce phénomène, qui en plus d’être très embêtant, risque de vous ralentir le serveur, et si vous effectuez des redirections de mail vers une boite de type orange ou autre, vous risquez carrément de finir en spam avec votre nom de domaine.

Ces spammeurs, en général en provenance de Chine (mais pas toujours), sont des robots cherchant généralement à faire tomber votre serveur mail. La structure de Prestashop étant bien connue (en raison de la popularité de l’outil), il est évident que les robots savent très exactement où taper pour que cela fasse mal. Bien souvent, ce sont des adresses emails en qq.com.

Le tutoriel ici correspond à trois méthodes que vous pouvez d’emblée mettre en place sur votre site, cependant la sécurité et les filtres anti-spams doivent être gérés depuis le serveur, non depuis un site. De nombreux outils gratuits existent côté serveur, comme Spam Assassin, IPTable ou Fail2Ban. Si votre hébergeur vous affirme le contraire, il s’expose à des soucis en terme de blacklistage et de performances.

Trois méthodes donc, qui sont même compatibles les unes avec les autres. La première consiste en un réglage dans votre back-office, la seconde (plus sévère) se passe dans votre htaccess, et doit donc être réalisée avec précaution, la troisième (demandant d’avoir une clé Google et savoir comment modifier son thème) ajoute un recaptcha sur votre site.

Ce tuto présente trois méthodes, mais la Team vous a quand même développé un module de ReCaptcha Google que vous pouvez retrouver en cliquant ici

Et si vous subissez le spam des petits rigolos qui utilisent des adresses email ou des noms de domaine en tant que nom ou prénom lors de l’inscription utilisateur, ce module supprime les inscriptions spam correspondant à ces critères, en plus de bloquer les emails « jetables ».

Les deux sont gratuits (comme ça vous pourrez pas dire qu’on vous aide pas ! 😀 ) Nous avons également un module (payant celui-ci) qui permet de bloquer un client dans la messagerie Prestashop, en verrouillant son adresse email ou son adresse IP

Bloquer les pays depuis Prestashop

Prestashop dispose d’un outil malheureusement trop peu utilisé par les commerçants, nommé GeoIp.

Je demande régulièrement aux e-commerçants quels sont les endroits où ils souhaitent livrer, pas forcément pour des conditions tarifaires, mais également pour des raisons de sécurité. Si vous ne livrez pas en Chine, quel intérêt ont les chinois de pouvoir accéder à votre site ? Et si d’aventure vous commencez à recevoir des visites de la part de la Russie, alors que votre site n’est ni référencé chez eux, ni traduit, et que vous ne livrez même pas dans ce pays, inutile de vous réjouir, ce trafic inopiné est on ne peut plus louche…

Prestashop vous permet de n’autoriser l’accès à votre site qu’aux pays dans lesquels vous livrez, à savoir les pays activés dans le back-office. Il s’agit donc d’une restriction qui affiche une page « restricted-country.tpl » de votre thème (fichier au passage plutôt complexe à modifier).

a/ Télécharger GeoIp

Pour télécharger GeoIp, rendez-vous dans « International » puis « Localisation » sous Prestashop 1.7, dans la version 1.6 le réglage se trouve sous « Préférences » puis « Géolocalisation ».

Un lien vous proposera de télécharger un fichier gzip à cette URL : http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz. Dézippez-le avant de vous connecter au FTP. Comme vous le précise Prestashop, placez le fichier dans /tools/geoip (envoyez bien fichier dézippé, sinon cela ne fonctionnera pas)

Prestashop : bloquer les spammeurs sur le SAV 1
Prestashop : bloquer les spammeurs sur le SAV 2
Prestashop : bloquer les spammeurs sur le SAV 3

b/ Activation de la restriction

A présent vous pouvez activer la géolocalisation par IP. Cochez donc la case, et précisez en-dessous ce que peuvent faire les pays restreints. L’idéal est de restreindre complètement les pays non autorisés, avec les réglages « Les visiteurs ne peuvent pas voir votre catalogue ».

Prestashop : bloquer les spammeurs sur le SAV 4

Sélectionnez en-dessous les pays autorisés en cochant les cases associées. Enregistrez, vous avez terminé !

L’effet est immédiat, pensez toutefois à vider votre cache, et si vous avez des amis qui se trouvent à l’étranger, demandez-leur de tester.

Bloquer des plages IP depuis le htaccess

Très restrictive, cette méthode a toutefois le désavantage de ralentir un peu votre site (d’où le fait que je précise une fois de plus que le blacklistage devrait être effectué depuis le serveur, par votre hébergeur, et non depuis le site).

Dans tout site utilisant Apache (pas l’indien, le module serveur), se trouve un fichier .htaccess, généralement à la racine de votre site. Celui-ci gère par exemple la réécriture des URL. Autant vous prévenir : une mauvaise manipulation bloquera votre site. Si cela vous arrive, pensez systématiquement à avoir une sauvegarde de ce fichier.

Une fois sauvegardé, éditez-le, et tout en bas de ce fichier, ajoutez ces règles de blocage par plages IP :

Télécharger le fichier de blocage par IP

La syntaxe est à ajouter à la fin de votre fichier htaccess à la racine de votre site.

Reconnaissez que la liste est plutôt longue ! Le résultat est immédiat, sans équivoque, et bannit toute personne dont l’IP se trouve dans les plages listées ci-dessus. Attention donc à deux choses : le ralentissement dû à une surcharge Apache, et également le blocage radical et sans équivoque de ces plages IP. Conservez toujours une sauvegarde du fichier. Il est tout de même préférable d’utiliser GeoIp Et un Captcha Google à ajouter sur votre Prestashop.

L’ajout d’un recaptcha

Le recaptcha vous demandera d’avoir à disposition un code Google, à créer à cette adresse :

https://www.google.com/recaptcha/admin

Et le code gracieusement fourni depuis ce snippet par Doekia (rendons à César 🙂 ) permet d’insérer cela via votre header.tpl !

Prestashop : bloquer les spammeurs sur le SAV 5

Voici le snippet en question :

<!-- Google ReCaptcha on contact form -->
                <script>
                        var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; /* TODO: tune this https://www.google.com/recaptcha/admin */
                        $(document).ready(function(){
                                var $forms = $('form.contact-form-box');
                                if ($forms.length > 0){
                                        var captcha = $('<div class="g-recaptcha" data-sitekey="'+ googlecaptchasitekey + '">');
                                        var $submit = $forms.find('#submitMessage');
                                        $submit.before(captcha);
                                        $submit.click(function(event){
                                                if ($forms.find('#g-recaptcha-response').val().length == 0) {
                                                        event.preventDefault();
                                                        event.stopPropagation();
                                                        return false;
                                                }
                                        });
                                }
                        });
                </script>
                <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script>
                {*
                      TODO: cut/paste into index.php (first after comments)
                      if (isset($_REQUEST['submitMessage'])){
                                if (empty($_REQUEST['g-recaptcha-response'])){
                                        sleep(25);
                                        die('not human');
                                }
                                $opts = array('http' =>
                                                array(
                                                        'method'  => 'POST',
                                                        'header'  => 'Content-type: application/x-www-form-urlencoded',
                                                        'content' => http_build_query(
                                                                array(
                                                                        'secret' => 'XXXXXXX-the-secret-key-XXXXXXXXXX', /* TODO: tune this https://www.google.com/recaptcha/admin */
                                                                        'response' => $_REQUEST['g-recaptcha-response'],
                                                                )
                                                        ),
                                                ),
                                );
                                $stream = stream_context_create($opts);
                                $captcha = @json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $stream), true);
                                if (empty($captcha) || empty($captcha['success']) || !$captcha['success']){
                                        sleep(25);
                                        die('not human'.PHP_EOL.print_r($captcha,1));
                                }
                        }
                *}
                <!-- /Google ReCaptcha -->

Il y a un bouton « Buy me a coffee » sur la page du snippet partagés, n’hésitez pas 😉

Ou si vous avez du mal à insérer un code ReCaptcha de Google, regardez par ici, la Team a développé un module spécialement dédié à cet effet : EverPsCaptcha !

Le cas de l’hébergeur

Fail2Ban, Spam Assassin et bien d’autres outils depuis un serveur permettent d’automatiser des blacklists et d’éviter d’avoir ce genre de soucis.

Avec la Team nous utilisons pas moins de trois outils directement sur nos serveurs, ce qui permet d’en faire profiter toute personne hébergée chez nous. Si un site a un souci, autant partir du principe que d’autres peuvent avoir le même (d’où ce tutoriel par exemple).

Voici les questions donc à poser à votre hébergeur :

  • demandez-lui si les deux outils listés ci-dessus sont bien installés et paramétrés
  • demandez-lui de blacklister directement depuis le serveur les mails spammeurs, comme @qq.com
  • repérez l’IP du ou des sites qui vous incriminent, et donnez-les à votre hébergeur en lui demandant de les blacklister sur la machine intégrale
  • en dernier lieu, surtout si vous redirigez vos mails vers une boite dépendant d’un opérateur, demandez-lui si vous n’êtes pas considéré comme un spammer. Orange, Microsoft et consorts vous bloqueront rapidement si vous transférez des spams depuis votre nom de domaine vers eux. Et au vu de leur réactivité à ce sujet une fois que votre souci est résolu, autant se prémunir immédiatement et vérifier cela
Imprimer Imprimer
Suivre Cyssoo:

Développeur - formateur

Je cherche à display errors le monde, vous auriez pas la doc' ? Follow me on Twitter !

16 Responses

  1. Sophie
    | Répondre

    Bonjour,
    merci beaucoup pour cet article qui m’a permis de bloquer un bot de spams des Etats-Unis (qui écrivait des messages en chinois).
    Pour ceux que ça peut aider, sur Prestahop 1.5.6, geoip se trouve dans Préferences > Geolocalisation

    Sophie

    • Cyril CHALAMON
      | Répondre

      Merci pour votre réponse 😉
      Attention, ces règles htaccess sont très violentes et restrictives. Il reste dans tous les cas préférable de passer par le serveur avec des outils antispam, pour éviter des effets de bord ou secondaires (webservices, etc)

  2. Nappilla
    | Répondre

    Bonjour team ever

    Depuis trois ans que la boutique est ouverte je ne connaissais pas cette manipulation merci beaucoup et la première partie est vraiment facile à mettre en place « geolp »
    Merci beaucoup pour cette information

  3. Laurent
    | Répondre

    Bonjour,

    Je viens de tester les solutions GeoIp + htaccess sur un hébergement mutu chez OVH mais elles ne fonctionnent pas.
    Nous avons changer l’url du formulaire de contact ajouter recaptcha mais les spams sont envoyer à partir d’une url qui n’existe pas erreur 404.
    Chez ovh nous ne pouvons pas filtrer le domaine qq.com ou autre, utiliser Fail2Ban, Spam Assassin.

    Nous n’avons pas de solution pour le moment.
    Merci pour vos éventuelles suggestions.

    Cordialement,
    Laurent

    • Cyril CHALAMON
      | Répondre

      Bonjour Laurent,
      En fait le tutoriel porte sur le blocage des spams reçus sur le formulaire de contact de Prestashop, non envoyés.
      Votre demande concerne probablement le blocage de votre hébergement. Un grand nombre des emails non sollicités (SPAM) ont été envoyés depuis votre hébergement.
      Si vous n’êtes pas à l’origine de ces envois, c’est que cela vient d’un piratage de votre site. Un pirate (hackeur) a réussi à placer des fichiers ou du code malveillant sur votre hébergement lui permettant de faire ces envois de spams.
      Pouvez-vous vérifier cela ?

  4. Laurent
    | Répondre

    Bonjour Cyril,

    Merci pour votre réponse, j’ai envisagé ce genre de piratage et mis en place les mesures suivantes.
    Changement mot de passe ftp et base de données;
    Vérification intégrité de la base de données.
    Upload d’une sauvgarde de l’install du site clean.
    Mise en place de captcha sur le formulaire de contact.
    Mis le site en maintenance.
    Mise en place de vos solutions pour bloquer les spams sur le sav.
    Nous avons aussi activé le pare feu applicatitif OVH.
    Malgré tout nous avons toujours nous avons toujours ce type de requ^étes qui pollue le site et nous empêche de redémarrer le site.
    69.165.64.189 URL-SPAMMER – [31/Jan/2018:08:49:46 +0100] « POST /contactez-nous HTTP/1.1 » 503 1232 « URL-SPAMMER/contactez-nous » « Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 »
    220.184.214.233 URL-SPAMMER – [31/Jan/2018:08:49:46 +0100] « POST /contactez-nous HTTP/1.1 » 403 223 « URL-SPAMMER/contactez-nous » « Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 »
    117.69.237.252 URL-SPAMMER – [31/Jan/2018:08:49:47 +0100] « POST /contactez-nous HTTP/1.1 » 403 223 « URL-SPAMMER/contactez-nous » « Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 »
    Je viens de relancer le processus d’envois de mail ce matin, je vais voir ci cela fonctionne.
    Bone journée.
    Laurent

  5. jean-paul
    | Répondre

    Bonjour, je trouve plusieurs “header.tpl” dans les fichiers, dans lequel d’entre-eux dois-je insérer le script captcha?

    Merci!

    • Cyril CHALAMON
      | Répondre

      Bonjour Jean-Paul,
      Ce n’est pas normal, vous ne devez avoir qu’un seul fichier portant ce nom dans votre thème.
      Sous quelle version de Prestashop êtes-vous ?

  6. jean-paul
    | Répondre

    1.6.1.4

    Dans le répertoire thèmes j’en ai 4 (homslider, default-bootstrap…)

    • Cyril CHALAMON
      | Répondre

      Je vois, il s’agit du fichier header.tpl se trouvant directement à la racine de votre thème, donc dans /themes/default-bootstrap/header.tpl

  7. Jean-Paul
    | Répondre

    Pour l’instant j’ai bloqué des pays avec GeoIp et pour l’instant je n’ai plus d’indésirables.
    Sinon, je tente la modif du script.
    Merci pour votre réponse rapide.

  8. Valérie
    | Répondre

    Bonjour,
    suite à la mise en place d’un recaptcha, j’ai l’impression que ça ralenti mon site :
    voici ce que me donne comme informations GTmetrix :
    Specify a cache validator
    A (98)
    Server High
    What’s this mean?

    The following resources are missing a cache validator. Resources that do not specify a cache validator cannot be refreshed efficiently. Specify a Last-Modified or ETag header to enable cache validation for the following resources:

    https://www.google.com/recaptcha/api.js?hl=fr-fr
    puis :
    515B of JavaScript is parsed during initial page load. Defer parsing JavaScript to reduce blocking of page rendering.

    https://www.google.com/recaptcha/api.js?hl=fr-fr (515B)
    puis :
    Minify JavaScript
    A (98)
    JS High
    What’s this mean?

    Minify JavaScript for the following resources to reduce their size by 2.5KiB (1% reduction).

    Minifying https://connect.facebook.net/en_US/all.js could save 872B (2% reduction) after compression. See optimized version.
    Minifying https://www.gstatic.com/recaptcha/api2/v1526884278587/recaptcha__fr.js could save 813B (2% reduction) after compression. See optimized version.
    Minifying https://souriredessaveurs.com/themes/default-bootstrap/cache/v_84_acefe832f7535ab5e20c52d7af9a577f.js could save 554B (1% reduction) after compression. See optimized version.
    Minifying https://www.facebook.com/rsrc.php/v3/yF/r/7HoVByoBHMJ.js could save 172B (1% reduction) after compression. See optimized version.
    Minifying https://www.facebook.com/rsrc.php/v3ijLc4/y8/l/en_US/50fVW0xMER1.js could save 82B (1% reduction) after compression. See optimized version.
    Minifying https://www.google.com/recaptcha/api.js?hl=fr-fr could save 46B (11% reduction) after compression. See optimized version.
    Minifying https://www.facebook.com/rsrc.php/v3/yb/r/FBZ0m5xzL3C.js could save 10B (1% reduction) after compression. See optimized version.
    Minifying https://www.facebook.com/rsrc.php/v3iT5V4/y6/l/en_US/n8UA8sOwDnT.js could save 8B (1% reduction) after compression. See optimized version.
    Minifying https://www.facebook.com/rsrc.php/v3ieFs4/yb/l/en_US/geb7NaoeYbv.js could save 8B (1% reduction) after compression. See optimized version.
    Minifying https://www.facebook.com/rsrc.php/v3/y2/r/y_9jnoUNojU.js could save 6B (1% reduction) after compression. See optimized version.
    Minifying https://www.facebook.com/rsrc.php/v3ifQL4/yW/l/en_US/88Ar_hlZWZc.js could save 5B (1% reduction) after compression. See optimized version.
    puis :
    Leverage browser caching
    A (92)
    Server High
    What’s this mean?

    Leverage browser caching for the following cacheable resources:

    https://www.google.com/recaptcha/api.js?hl=fr-fr (5 minutes)
    https://connect.facebook.net/en_US/all.js (20 minutes)
    Dans toutes ces informations de GTmetrix, on parle du module de captcha.
    Je ne comprends pas ce que ça explique.
    Merci

  9. Valérie
    | Répondre

    Bonjour, hier j’ai installé Geop via préférences/géolocalisation de prestashop. J’ai suivi vos recommandations. Aujourd’hui en regardant mon front office, je me suis apperçue que la page « commander » était blanche. J’ai donc supprimé ce module dans tools depuis le ftp, ré-activé les pays chine russie rwanda, enregistré le tout, vider le cache, mais j’ai toujours la page blanche. De plus, j’ai remarqué que le fichier HTacces avait été modifié hiers lors de cette manip, et là, il ne se remet pas, malgré avoir vidé le cache de mon site. Je suis perdue. Merci de votre aide.

    • Cyril CHALAMON
      | Répondre

      Bonjour Valérie,
      Pourriez-vous m’envoyer par email des accès FTP et back-office à votre site ? Je devrais pouvoir vous régler cela rapidement, la méthode checkAccessStatic est en erreur ou absente sur votre site (ce qui génère une erreur)

      • VALERIE
        | Répondre

        Bonjour,
        avez-vous bien reçu mon mail ?
        Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.