Sommaire
La solution pour éviter les spams et faux comptes clients Prestashop
Un GRAND merci à nos héros sur le FORUM de Prestashop qui encore vont nous sauver la vie ! DOEKIA pour l’astuce et EOLIA pour les conseils de mise en place : https://www.prestashop.com/forums/topic/981158-securite-spam-compte-client-solution-13-17/
Solution de sécurité Prestashop 1.5 à 1.7 pour arrêter les spams comptes clients
1. Créer le fichier dans www/override/classes/Validate.php où l’éditer s’il existe déjà.
class Validate extends ValidateCore { 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. Créer le fichier dans www/override/classes/Customer.php où l’éditer s’il existe déjà.
class Customer extends CustomerCore { /** * @see ObjectModel::$definition */ public static $definition = array( 'table' => 'customer', 'primary' => 'id_customer', 'fields' => array( 'secure_key' => array('type' => self::TYPE_STRING, 'validate' => 'isMd5', 'copy_post' => false), 'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32), 'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32), 'email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128), 'passwd' => array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => true, 'size' => 32), 'last_passwd_gen' => array('type' => self::TYPE_STRING, 'copy_post' => false), 'id_gender' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'birthday' => array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'), 'newsletter' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'newsletter_date_add' => array('type' => self::TYPE_DATE,'copy_post' => false), 'ip_registration_newsletter' => array('type' => self::TYPE_STRING, 'copy_post' => false), 'optin' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'website' => array('type' => self::TYPE_STRING, 'validate' => 'isUrl'), 'company' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'), 'siret' => array('type' => self::TYPE_STRING, 'validate' => 'isSiret'), 'ape' => array('type' => self::TYPE_STRING, 'validate' => 'isApe'), 'outstanding_allow_amount' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'copy_post' => false), 'show_public_prices' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'id_risk' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false), 'max_payment_days' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'deleted' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'note' => array('type' => self::TYPE_HTML, 'validate' => 'isCleanHtml', 'size' => 65000, 'copy_post' => false), 'is_guest' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'id_shop_group' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'id_default_group' => array('type' => self::TYPE_INT, 'copy_post' => false), 'id_lang' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), ), ); }
Une fois cette opération de création des OVERRIDES, penser à supprimer le fichier www/cache/class_index.php qui se régénérera automatique pour prendre en compte les nouveaux fichiers.
Infos du 27-01 : Un module est proposé par l’agence Aurone de Tunis : Téléchargez et installer le module Prestashop
Solution de sécurité Prestashop 1.3 à 1.4 pour arrêter les spams comptes clients
Pour la version 1.3 de Prestashop, vous devrez modifier les fichiers PHP, l’override n’existant pas encore.
1. Créer le fichier dans www/override/classes/Validate.php où l’éditer s’il existe déjà.
class Validate extends ValidateCore { public static function isCustomerName($name) { if (preg_match('/www|http/ui',$name)) { return false; } return preg_match('/^[^0-9!\[\]<>,;?=+()@#"°{}_$%:\/\\\*\^]*$/u', $name); } }
2. Créer le fichier dans www/override/classes/Customer.php où l’éditer s’il existe déjà.
class Customer extends CustomerCore { 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'); }
Supprimer les spams Prestashop des comptes clients
La procédure finale vous invite à supprimer les comptes clients frauduleux et à supprimer le fichier www/cache/class_index.php pour que les fichiers override soient actifs.
Ensuite vous n’aurez plus qu’à tester la création d’un compte client TEST pour voir si tout fonctionne et si vous n’avez pas une page blanche Prestashop qui s’affiche.