Blog Page

Astuce Prestashop

Solution pour bloquer les spam de faux comptes clients Prestashop

Depuis environ 15 jours les boutiques Prestashop (de la 1.4 à la 1.7) se font spammer via la création de faux comptes clients, si vous ne remédiez pas à ce problème rapidement cela risque de saturer votre base de données et faire dysfonctionner votre boutique.


 

Pour vérifier si vous en êtes victime de ces spams de masse, il faut vous rendre dans l'administration de votre Prestashop et aller dans la liste de vos clients. Si vous constatez que ce listing comporte des comptes avec  comme prénom une phrase en anglais et à la place du Nom une URL (www.xxxx.xxx) c'est que, vous aussi, vous subissez ces créations de faux comptes clients, qui a terme va vous poser des problèmes (saturation de votre base de données  -- les créations de faux comptes peut aller jusqu'à plusieurs centaines part jour -  ce qui au "mieux" ralentira votre boutique ou au pire la fera planter totalement.

 

prestashop compte client spam

 

La méthode pour bloquer la création des faux comptes clients sur Prestashop 1.5.4.1 à 1.7:

 

La première des actions est donc de supprimer manuellement tous ces faux comptes (les identifier avec leur URL à la place Nom de famille).

 

effacer clients prestashop 2019

 

La seconde et la plus importante est de corriger au plus vite cette faille de sécurité de Prestashop. Pour corriger ce problème il faut donc modifier 2 fichiers et Prestashop alors bloquera automatiquement la création de compte comprenant une URL dans le Nom ou le Prénom du client.

1 : Ajouter ce code dans le fichier classes/Validate.php - un faisant un override pour ne pas modifier le cœur de Prestashop

 public static function isCustomerName($name)
{
if (preg_match(Tools::cleanNonUnicodeSupport('/www|http/ui'),$name)) {
return false;
}
return preg_match(Tools::cleanNonUnicodeSupport('/^[^0-9!\[\]<>,;?=+()@#"°{}_$%:\/\\\*\^]*$/u'), $name);

}

2 : Ensuite modifier le fichier dans classes/Customer.php 

Rechercher le code 

'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),

 Le remplacer par 

'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32),
'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32),

Pour Prestashop 1.3 et 1.4 la méthode est pratiquement identique

 1 : modifier le fichier Validate.php comme ceci  :

public static function isCustomerName($name)
{
if (preg_match('/www|http/ui',$name)) { return false;
}
return preg_match('/^[^0-9!\[\]<>,;?=+()@#"°{}_$%:\/\\\*\^]*$/u', $name);
}

2 : Modifier  cette partie dans le fichier Customer.php

protected $fieldsValidate = array('secure_key' => 'isMd5', 'lastname' => 'isName', 'firstname' => 'isName', 'email' => 'isEmail', 'passwd' => 'isPasswd',
'id_gender' => 'isUnsignedId', 'birthday' => 'isBirthDate', 'newsletter' => 'isBool', 'optin' => 'isBool', 'active' => 'isBool', 'note' => 'isCleanHtml', 'is_guest' => 'isBool');
protected $exclude_copy_post = array('secure_key', 'active', 'date_add', 'date_upd', 'last_passwd_gen', 'newsletter_date_add', 'id_default_group', 'ip_registration_newsletter', 'note', 'is_guest', 'deleted');

en

protected $fieldsValidate = array('secure_key' => 'isMd5', 'lastname' => 'isCustomerName', 'firstname' => 'isCustomerName', 'email' => 'isEmail', 'passwd' => 'isPasswd',
'id_gender' => 'isUnsignedId', 'birthday' => 'isBirthDate', 'newsletter' => 'isBool', 'optin' => 'isBool', 'active' => 'isBool', 'note' => 'isCleanHtml', 'is_guest' => 'isBool');
protected $exclude_copy_post = array('secure_key', 'active', 'date_add', 'date_upd', 'last_passwd_gen', 'newsletter_date_add', 'id_default_group', 'ip_registration_newsletter', 'note', 'is_guest', 'deleted');

 

Ne faites ces manipulations de fichiers que si vous êtes sûr de vous et savez exactement ce que vous faites,  sinon vous risqueriez d'empêcher vos clients de se connecter ou s'inscrire sur votre boutique, ce qui potentiellement vous ferait perdre de nombreuses ventes…

 

 

 Ps = merci à "Doekia" du forum Prestashop pour avoir mis cette solution à la disposition de la communauté.

 EDIT le 04/05/2019 : Depuis le 03-MAI-2019, la version 1.6.1.24 de Prestashop intègre ce patch

Si vous voulez corriger cette faille de sécurité sans risques pour votre boutique, nous vous invitons à nous contacter et nous vous aiderons à corriger le problème rapidement

Sauvegarder
Choix utilisateur pour les Cookies
Nous utilisons des cookies afin de vous proposer les meilleurs services possibles. Si vous déclinez l'utilisation de ces cookies, le site web pourrait ne pas fonctionner correctement.
Tout accepter
Tout décliner
Analytics
Outils utilisés pour analyser les données de navigation et mesurer l'efficacité du site internet afin de comprendre son fonctionnement.
Google Analytics
Accepter
Décliner