Ils sont de retour ! Les vilains Spammeurs s’inscrivent désormais directement sur votre boutique en ligne Prestashop ? Ces inscriptions vous font perdre un temps considérable. Les Spams sont particulièrement virulents en ce moment, après les Spams en masse sur le SAV et les le formulaire de contact Prestashop, les attaques se passent maintenant sur le formulaire d’inscriptions de Prestashop, voyons comment y remédier !
Le spam sur le formulaire d’inscription Prestashop
Le formulaire de création de compte de Prestashop est la nouvelle cible d’attaques. Les noms enregistrés sont généralement des noms de domaines comme cutt.us ou xurl.es qui mènent vers des sites frauduleux.
Les risques du spam
Les Attaque du formulaire de création de compte client PrestaShop sont pas vraiment dangereuses, elles risquent cependant de vous faire perdre du temps dans la gestion de vos clients. En effet les inscriptions sont généralement faites en grande quantité, vos véritables inscriptions sont donc noyées parmi les fausses…
Comment fonctionne le spam sur Prestashop ?
Toujours sur le même principe, les fausses inscriptions sur Prestashop ne sont pas directement effectuées via le formulaire. Elles sont générées par un programme (un scripts dans un language informatique) qui permet de faire des attaques en masse.
Comment limiter les inscriptions frauduleuses ?
Plusieurs solutions sont possibles, cependant je vous conseille d’agir directement sur votre site Prestashop car la mise en place d’actions du coté de votre hébergement seront facilement contournables.
La méthode directement dans le code
Si vous savez un minimum coder vous pouvez réaliser les surcharges suivantes :
Pour les versions Prestashop 1.5 à 1.7
Dans classes/Validate.php – ajoutez cette fonction
1 2 3 4 5 6 7 8 |
public static function isCustomerName($name) { if (preg_match(Tools::cleanNonUnicodeSupport('/www|http/ui'),$name)) { return false; } return preg_match(Tools::cleanNonUnicodeSupport('/^[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][^0-9!\[\]<>,;?=+()@#"°{}_$%:\/\\\*\^]*$/u'), $name); } |
Modifiez ensuite dans classes/Customer.php
1 2 |
'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32), 'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32), |
Par
1 2 |
'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 la version Prestashop 1.4
Dans classes/Validate.php – ajoutez cette fonction
1 2 3 4 5 6 7 8 |
public static function isCustomerName($name) { if (preg_match('/www|http/ui',$name)) { return false; } return preg_match('/^[^0-9!\[\]<>,;?=+()@#"°{}_$%:\/\\\*\^]*$/u', $name); } |
Modifiez ensuite dans classes/Customer.php
1 2 3 |
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'); |
Par
1 2 3 |
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'); |
La méthode via un module
Si vous n’aimez pas ou n’osez pas toucher au code, vous pouvez ajouter un module Prestahsop Recaptcha qui normalement (cela dépend des modules) devrait empêcher les inscriptions de type spam.
Google a sorti dernièrement une version 3 de son Recaptcha qui permet de contrôler les inscriptions sans interventions de la part de l’utilisateur. Je vous conseille vivement d’utiliser Google ReCaptcha 3 qui améliorera considérablement l’expérience utilisateur.
Enfin, je reste disponible si vous souhaitez une intervention de ma part sur votre site Prestashop !
[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]
Malheureusement ça ne devrait pas fonctionner en 1.4
Je n’ai aucune ce ces 4 lignes dans Customer.php
Salut
Oui en effet mon code était seulement pour les versions 1.5 à 1.7.
Je viens de rajouter pour la 1.4 dans l’article.