Jump to content

Recommended Posts

Bonjour,

 

Le site de notre client se fait spamer à mort depuis deux jours et ce malgré un ajout de module recaptcha de google sur le formulaire de contact ! Voici le genre de message SAV : 潪愽荖琥鸡【 www.zb557.com 】電子特邀:50餸58 100鎹118 12水

Et voici l'adresse du site en question :  escapade-petillante-et-gourmande-en-champagne.com

La boutique est en 1.6.1.13, donc à jour pour cette branche... oui puis-je trouver la "faille" qui permet à ce robot de passer "par dessus" le formulaire !

 

Merci.

Edited by thomascp (see edit history)
Link to comment
Share on other sites

Il est probable que le botnet ne passe plus par le formulaire et/ou ait trouvé/déposé une porte dérobée.

Il va falloir passer du temps à déverminer, analyser les logs, etc

 

Est-tu absolument sûr que ce soit le formulaire qui serve d'origine?

Est-tu sur un mutu? un dédié?

PM moi éventuellement

Link to comment
Share on other sites

Merci,

 

@Eolia cela fait avancer mon problème, si vous n'avez quelque chose de plus constructif à dire, merci de vous abstenir.

 

@doekia je suis presque sur qu'effectivement il ne passe pas par le formulaire et je suis sur un dédié, j'essaye de trouver la piste dans les logs mais c'est pas simple !

Link to comment
Share on other sites

Ce que Eolia te dit, et c'est excessivement pertinent, c'est que tu as mis un captcha qui n'est simplement pas vérifié, donc c'est comme si tu n'avais rien mis.

Pense que les gens veulent t'aider et que donc leur remarques n'ont en aucune manière à être mal prise.

Poses toi dans ce cas la question, "pourquoi quelqu'un irait perdre son temps pour répondre cela!"

Link to comment
Share on other sites

Désolé 20 ans d'expérience sur le net m'ont appris que beaucoup de gens sont devenus maitre dans l'art de ne rien dire ;)

Sinon je ne sais toujours pas comment faire pour que mon captcha soit vérifié... étant donné que c'est un module que j'ai installé je pensez (bêtement) qu'il fonctionnait... Je l'ai testé et il m'a effectivement rejeté si je ne le coche pas !... Bref toujours au point mort, merci en tout cas de votre aide. D'autre part le test qu'eolia a réalisé ne sert pas à grand chose car qu'un humain puisse remplir le formulaire n'est pas anormal....

Edited by thomascp (see edit history)
Link to comment
Share on other sites

Avec 20 ans d'expérience, tu crois encore qu'il y a une armée de personnes qui cliquent pour envoyer du spam?

Ton module injecte sa nouvelle url, mais si j'ai un script qui utilise toujours l'ancienne url, ton captcha est ignoré (puisque non bloqué par prestashop).

Maintenant je comprends mieux pourquoi tu penses que les autres cultivent l'art de ne rien dire.... parler dans le vide s'est frustrant

Link to comment
Share on other sites

Il y en a surtout qui devraient avoir l'art de s'abstenir plutôt que de râler sans comprendre.

 

Je vous montre en 1 ligne comment soumettre un formulaire sans être géné par quoique ce soit. Si vous voulez le sécuriser contre le spam c'est au niveau de php qu'il faut intervenir.

 

Après, si un chinois vous en veut il y a surement une raison car le spam c'est en masse, ce n'est pas que vers un bo^^

Link to comment
Share on other sites

1/ De nombreux visiteurs vont tomber sur ce post, (ex: moi, vu que ça nous arrive aussi en ce moment sur certains de nos prestashops) et lire vos embrouilles à 2 balles c'est pas très "orienté solutions" ;-)

 

2/ Nous avons aussi utilisés plusieurs modules de captcha, mais qui sont validés uniquement en POST. Et comme démontré par @Eolia, le captcha n'est pas validé lorsque l'URL est appelée en GET.

 

3/ Cela vient t'il du module de captcha qui n'est pas bon ? où d'un problème core prestashop qui permet de submit un formulaire même en GET pour le module SAV ?

 

PS: @Eolia, peux tu supprimer le domaine du lien en GET que tu as mis car j'ai voulu cliqué pour prendre exemple, et du coup j'ai envoyé des SPAM et je pense que je ne serai pas le seul =)

 

Merci à vous.

Edited by sf_tristanb (see edit history)
Link to comment
Share on other sites

Bonjour, sf_tristanb bienvenu dans la conversation et si avez des pistes je suis preneur, j'ai creusé du coté de la function isEmail de la classe Validate pour ajouter un test maison mais sans succès pour l'instant.

Link to comment
Share on other sites

3/ Cela vient t'il du module de captcha qui n'est pas bon ? où d'un problème core prestashop qui permet de submit un formulaire même en GET pour le module SAV ?

 

Vous ne connaissez pas la fonction Prestashop Tools::getValue() ?

 

Que ce soit en POST ou en GET, elle récupère tout ce qui passe...

 

Maintenant pour vos soucis de "spam" c'est plutôt sur le nombre de soumission/sec qu'il faut jouer^^

Link to comment
Share on other sites

@doekia Vu que c'est un formulaire qui se soumet sur la même URL, bloquer cette URL en get reviendrait à ne plus pouvoir acceder à la page du formulaire.

 

GET -> /contactez-nous affiche le formulaire

GET -> /contactez-nous?xxxxx=xxx soumet le formulaire

 

IMO, soumettre un formulaire en appellant une URL en get est, par design, mauvais. Je ne sais pas pourquoi les devs du module SAV ont fait ça comme ça, et surtout, comment ça se fait que plus de personnes ne soient pas impactés. :-)

Edited by sf_tristanb (see edit history)
Link to comment
Share on other sites

Après l'installation de ton captcha, le bouton submit est rerouté vers celui-ci (en post), donc personne ne peut utiliser /contactez-nous pour soumettre son message (avec submitMessage en paramètre), sauf un bot qui ne relit pas le formulaire !!!!

Pour tout l'univers connu, http://le-site-de-ton-pauvre-client/modules/eicaptcha/eicaptcha-ajax.php est différent de http://le-site-de-ton-pauvre-client/contactez-nous

 

Moi je lis les messages et j'essaie de comprendre... 

Link to comment
Share on other sites

Bonjour,

 

Le site de notre client se fait spamer à mort depuis deux jours et ce malgré un ajout de module recaptcha de google sur le formulaire de contact ! Voici le genre de message SAV : 潪愽荖琥鸡【 www.zb557.com 】電子特邀:50餸58 100鎹118 12水

Et voici l'adresse du site en question :  escapade-petillante-et-gourmande-en-champagne.com

La boutique est en 1.6.1.13, donc à jour pour cette branche... oui puis-je trouver la "faille" qui permet à ce robot de passer "par dessus" le formulaire !

 

Merci.

 

Hello, 

Notre Boutique ce fait elle aussi spam mais j'ai peux etre une solution d'urgence... je vous fait un fichier contactController qui règlera temporairement le problème 

Je vous transmet ça des que c'est finie.

Pour info nos equipes SAV ont visiblement identifié une liste des sites contenue dans les messages ... 

Je vous la fournie au cas ou. 

(NE CLICQUEZ PAS DESSUS)

www.hubofa.com

www.lehu201.com

www.longhu90.com

www.sega113.com

www.zb557.com

Link to comment
Share on other sites

En effet cette solution peut être fonctionnel.

Personnellement nous avons fait le choix de ne pas implémenter de captcha car nous nous adressons à un public de senior.

J'ai donc développé un module qui fonctionnera autrement. Je vous le transmet sous peu. 

Il est gratuit bien entendu.

(en revanche comme il s'agit d'un override automatique je doute qu'il soit compatible avec la solution proposé plus haut concernant la validation du captcha)

Link to comment
Share on other sites

Bonjour,

 

Le site de notre client se fait spamer à mort depuis deux jours et ce malgré un ajout de module recaptcha de google sur le formulaire de contact ! Voici le genre de message SAV : 潪愽荖琥鸡【 www.zb557.com 】電子特邀:50餸58 100鎹118 12水

Et voici l'adresse du site en question :  escapade-petillante-et-gourmande-en-champagne.com

La boutique est en 1.6.1.13, donc à jour pour cette branche... oui puis-je trouver la "faille" qui permet à ce robot de passer "par dessus" le formulaire !

 

Merci.

 

Voila donc mon module vous n'avez plus qu'à l'installer antispamcontact.zip

il est préconfiguré pour les attaques d'hier et aujourd'hui 

c'est un système de blackListing basique par des champs texte.

(il n'est pas compatible avec la solution proposé plus haut: c'est à dire qu'il faut choisir soit la solution soit le module. Vous pouvez toujours cela dit faire un merge et appliquer cette solution dans l'override du module si vous avez le module captcha)

un écran de configuration est dispo 

Désolé si le module n'est pas très design mais j'ai du le développer en urgence je le mettrai certainement à jour si vous le souhaitez

 

Voila en espérant que ça puisse aider certain

Edited by Thorfy (see edit history)
  • Like 2
Link to comment
Share on other sites

Merci beaucoup pour votre investissement ! Ca fait plaisir de voir des gens impliqués ;) ! Je marque votre post comme solution, cela servira aussi à d'autres qui ne manqueront pas de venir chercher de l'aide ici, je ne pense pas être le seul.

  • Like 1
Link to comment
Share on other sites

Bonjour Thorfy,

 

Comment installer ton module stp ?

bonjour,

 

Alors commençons des le debut,

Il vous faut la deuxieme version que je viens à l'instant d'upload.

Ensuite pour l'installation il faut :

 - Aller dans l'onglet module de votre backOffice

 -  puis en haut a droite "Ajouter un nouveau module"

 - choisissez le fichier fraichement téléchargé 

 - puis appuyer sur "charger le module"

le module va etre déposé sur votre serveur.

Il faut maintenant l'installer:

 - chercher antispamcontact dans les modules

 - appuyer sur installer

 - il vous demandera l'autorisation d'etre installé.

 - appuyez sur "Continuer l'installation"

 - c'est terminé

si vous souhaitez le configurer il suffit d'appuyer sur configurer ( mais il est déjà préconfiguré).

Edited by Thorfy (see edit history)
Link to comment
Share on other sites

comme je l'ai dis il s'agit d'une version developpé dans l'urgence l'interface n'est donc pas optimal... (vous pouvez par exemple ecrire 2 fois le meme texte.)

en revanche elle est fonctionnelle.

Je n'ai plus de problème de spam personnellement.

Je developperai bientot une version permettant de supprimer les messages SPAM de l'onglet SAV (c'est en cours)

Edited by Thorfy (see edit history)
Link to comment
Share on other sites

Comme indiqué dans le snippet, header.tpl,

Code à ajouter avant la balise </head>

Et recopier la section en commentaire ( {* ... *} ) comme indiqué dans le snippet dans l'index.php à la racine du site

 

Pour un thème non-standard il peut-être nécessaire d'ajuster le sélecteur à la ligne 5. Mais sur 90% des thèmes testé (14/15), le selecteur actuel fonctionne

Edited by doekia (see edit history)
  • Like 4
Link to comment
Share on other sites

Oui et non.

 

1/ Le cache du header est le même partout donc au final très peu de surcharge, quand à la librairie captcha de google, elle est caché par le navigateur, donc elle aussi aura au final peu d'impact.

2/ Si tu le souhaites, il te suffit d'encadrer la section dans un {if $page_name = 'contact'} {/if}

3/ Si nous avons d'autres pages à protéger, il suffit d'étendre le sélecteur (ligne 5 du snippet)

 

J'ai fait le code dans une optique (béotien). Pour que l'on puisse le déployer/adapter avec vraiment très peu de compétences.

 

PS: je viens de survoler ton module. Ne te décourage pas, Il mérite sûrement d'aller de l'avant car il faut d'autre contrôles que ne fait pas la captcha de google

Edited by doekia (see edit history)
  • Like 1
Link to comment
Share on other sites

c'est quand même dommage niveau opti de le mettre sur toutes les pages alors que ça concerne seulement le formulaire de contact.

En revanche c'est certainement plus viable que mon module sur le long terme.

On parle de quoi là ? 5 lignes de js dans le header ?

 

Faudrait pas trop chipoter sur l'optimisation quand on voit certains modules qui chargent en mémoire whatmille data sur toutes les pages juste pour afficher 3 étoiles sur une page produit...

 

Doekia fournit gratuitement et clé en main une solution à la portée de tous et votre 1er commentaire commence par remettre en cause une certaine "optimisation".

Un "Merci" aurait été plus préférable^^

 

C'est à se demander s'il faut continuer à proposer des solutions sur ce forum...

  • Like 2
Link to comment
Share on other sites

On parle de quoi là ? 5 lignes de js dans le header ?

 

Faudrait pas trop chipoter sur l'optimisation quand on voit certains modules qui chargent en mémoire whatmille data sur toutes les pages juste pour afficher 3 étoiles sur une page produit...

 

Doekia fournit gratuitement et clé en main une solution à la portée de tous et votre 1er commentaire commence par remettre en cause une certaine "optimisation".

Un "Merci" aurait été plus préférable^^

 

C'est à se demander s'il faut continuer à proposer des solutions sur ce forum...

C'est dingue le ton méprisant que vous pouvez employer quand vous répondez aux messages (pour au final ne rien dire)

J'ai simplement demander à doekia son avis sur la question il m'as répondu de manière extrement clair et technique. Ça s'arrête là. (Je n'ai pas la science infuse je ne développe​ que depuis peut)

Pour ce qui est de "c'est à ce demander s'il faut continuer de proposer des solutions" il me semble que oui et même plutôt deux fois qu'une: j'aurais pu tout simplement donner un override du fichier et basta ... Mais voilà je me suis dis que certaines personnes peuvent être dans le même problème sans pour autant avoir jamais codé, j'ai donc investi de mon temps pour leur offrir une solution provisoire simple d'utilisation.

Donc merci mon cher où ma chère de bien réfléchir avant d'écrire des messages condescendant envers les autres.

  • Like 4
Link to comment
Share on other sites

C'est dingue le ton méprisant que vous pouvez employer quand vous répondez aux messages (pour au final ne rien dire)

J'ai simplement demander à doekia son avis sur la question il m'as répondu de manière extrement clair et technique. Ça s'arrête là. (Je n'ai pas la science infuse je ne développe​ que depuis peut)

Pour ce qui est de "c'est à ce demander s'il faut continuer de proposer des solutions" il me semble que oui et même plutôt deux fois qu'une: j'aurais pu tout simplement donner un override du fichier et basta ... Mais voilà je me suis dis que certaines personnes peuvent être dans le même problème sans pour autant avoir jamais codé, j'ai donc investi de mon temps pour leur offrir une solution provisoire simple d'utilisation.

Donc merci mon cher où ma chère de bien réfléchir avant d'écrire des messages condescendant envers les autres.

Salut Thorfy,

 

Merci pour ce module qui dépanne bien et est adapté à tous.

Je suis tout à fait de ton avis également concernant la récurrence des messages condescendant de certains (ou plutôt toujours les mêmes).

C'est vraiment plus que désagréable, il serait peut être temps que Prestashop fasse quelque chose.

Des formations sur le savoir vivre ?

ou bien

Comment se comporter en société quand on est un Geek mégalomane ?

 

Christophe

  • Like 2
Link to comment
Share on other sites

Ha ok je vois que je suis pas le seul à avoir se ressenti... j'ai eu peur d'être un peu un vieux c** ;) (40 ans déjà...)

Mais qu'importe le topic est solved et avec deux solutions qui plus est !

Que demander de plus.

  • Like 3
Link to comment
Share on other sites

Je n'ai pas ressenti d'agression dans le message de @Thorfy mais @Eolia oui. Et pour être honnête, j'aurais pu sans la mention à la dernière phrase. Je peux parfaitement comprendre son agacement. Il contribue massivement à l'entraide sur ce forum tout comme moi et nous somme régulièrement mis à l'index par des "membres" que je qualifierai de plus en plus de "parasite". Une multitude de nouveau arrivant avec un connaissance niveau mikado, qui n'ont aucun remerciement, et sont à mettre en doute les réponses que nous leurs fournissons.

 

Donc oui @Eolia s'est emporté et encore une fois je le comprend. Si vous ne connaissait pas @Eolia et son aide et compétences sur ce forum, alors désolé, vous devriez. Quand a demander à Prestashop de faire quelque chose. Corriger le code pour éviter que la faille se reproduise ailleurs ? Que nenni. Cette faille a été reporté depuis des années. Lettre morte. Faire bannir le verbe haut d'un membre ayant tellement fait depuis tant de temps - Il peuvent le faire, mais la communauté se portera t'elle mieux si elle se prive des seuls derniers vrais membres - j'en doute. Ce qu'@Eolia a dit peut-etre un peu fort c'est "remerciez ceux qui aident"

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

J'ai installé le recaptcha de Google sur mon formulaire mais les spams continuent d'affluer. http://vaisongroupeb.com/nous-contacter

Peut être faut-il attendre que le script du hacker soit terminé ?

 

Log du vilain hacker chinois

121.58.209.251 - - [24/May/2017:15:10:26 +0200] "POST /nous-contacter HTTP/1.1" 200 22750 vaisongroupeb.com "http://vaisongroupeb.com/nous-contacter" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" "-"

Link to comment
Share on other sites

Il est probable que nombre de post soient actuellement en "queue'.

Tu peux également mettre un "sniffer" pour ausculter le contenu du post est vérifier que la réponse est bien "erreur"

Dans l'implantation que j'ai faites, je fait une pause de 25 secondes pour ralentir/dégouter le bot avant de l'envoyer se faite "*****"

Link to comment
Share on other sites

Merci pour ta réponse !

C'était bien ça, il y avait trop de posts en queue. Tout est redevenu calme dans mon SAV \o/

 

Peux-tu m'en dire plus sur le "sniffer" ? Comment mettre en place un sniffer ? Si tu as un bon tuto sous la main :)

Link to comment
Share on other sites

Voici la liste mise à jour des sites à bannir dans les messages:

 

www.hubofa.com

www.lehu201.com

www.longhu90.com

www.sega113.com

www.zb557.com

sj5666.com

www.ZHOUJI6.COM

www.sega117.com

www.sega7.com

huyabo.com

www.new8882.com

sega09

xieyiceshi

Edited by Thorfy (see edit history)
Link to comment
Share on other sites

Voila donc mon module vous n'avez plus qu'à l'installer attachicon.gifantispamcontact.zip

il est préconfiguré pour les attaques d'hier et aujourd'hui 

c'est un système de blackListing basique par des champs texte.

(il n'est pas compatible avec la solution proposé plus haut: c'est à dire qu'il faut choisir soit la solution soit le module. Vous pouvez toujours cela dit faire un merge et appliquer cette solution dans l'override du module si vous avez le module captcha)

un écran de configuration est dispo 

Désolé si le module n'est pas très design mais j'ai du le développer en urgence je le mettrai certainement à jour si vous le souhaitez

 

Voila en espérant que ça puisse aider certain

 

Merci pour cette solution bonne journée

Edited by geo3469 (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

Merci à tous pour vos solutions, j'ai un client qui vient d'avoir ce problème et vos commentaires m'ont bien aidé.

 

Ps : pour arrêter le pb du spam rapidement avant d'appliquer les correctifs mentionnés dans ce thread, vérifier vos logs serveur, récupérez l'adresse ip du spammeur et bloquez la via un Deny from adresseipici dans le htaccess.

 

Bonne journée!

Edited by jcuenin (see edit history)
  • Like 1
Link to comment
Share on other sites

Merci à tous pour vos solutions, j'ai un client qui vient d'avoir ce problème et vos commentaires m'ont bien aidé.

 

Ps : pour arrêter le pb du spam rapidement avant d'appliquer les correctifs mentionnés dans ce thread, vérifier vos logs serveur, récupérez l'adresse ip du spammeur et bloquez la via un Deny from adresseipici dans le htaccess.

 

Bonne journée!

le problème de cette methode:

c'est qu'en réalité vous bloquez non pas les bot chinois, mais les adresse ip des compagnies de mail

(gmail en chine l'équivalent c'est qq.com)

Donc plus aucun mail provenant de leur serveur n'aboutirons ou se connecterons sur votre boutique (selon la config que vous avez fait).

Personnelement nous travaillons en liens avec la chine.

Blacklisté les adresses nous a empéché de contacter certains clients ou entreprises qui était hébergés sur ces même serveurs.

(Si vous n'avais pas l'intention de travailler avec eux vous pouvez le faire les yeux fermé) 

 

PS: autant pour moi, je viens de voir que c'était votre solution en attendant l'application des differents patch ;)

Edited by Thorfy (see edit history)
  • Like 1
Link to comment
Share on other sites

Entre passer du temps à récupérer l'ip qui va être +/- celle d'un proxy, d'un infecté, ... entrer cette liste sans fin dans le .htaccess (attention aux syntaxes apache 2.4+) et appliquer un patch qui prends moins de temps à déployer et qui de toute manière devra l'être,j'opte pour la solution la plus efficace, patch direct.

Link to comment
Share on other sites

  • 6 months later...

Bonjour Thorfy,

Je tenais simplement à te remercier pour ton travail. En ce qui me concerne il m'a sauvé la mise sur le site de notre association.

Si ça peut servir, voici ma liste de blacklistage :

Bonne journée

 

Link to comment
Share on other sites

il me semble que lors de l'install, l'initialisation de la variable de configuration ANTISPAMCONTACT_LIST est erronée.

      if (!Configuration::getGlobalValue('ANTISPAMCONTACT_LIST')) {
         $value = 'a:15:{i:0;s:15:"www.lehu201.com";i:1;s:16:"www.longhu90.com";i:2;s:13:"www.zb557.com";i:3;s:14:"www.hubofa.com";i:4;s:15:"www.sega113.com";i:5;s:8:"@166.com";i:6;s:8:"@163.com";i:7;s:7:"@qq.com";i:8;s:10:"huyabo.com";i:9;s:10:"xieyiceshi";i:10;s:13:"www.sega7.com";i:11;s:15:"www.new8882.com";i:12;s:15:"www.sega117.com";i:13;s:15:"www.ZHOUJI6.COM";i:14;s:10:"sj5666.com";}';
         if (!Configuration::updateGlobalValue('ANTISPAMCONTACT_LIST', serialize($value))) {
            return false;
         }
      }

Tu serializes un contenu déjà sérialisé

Link to comment
Share on other sites

Oui php le laisse passer mais lorsque tu vas désérialiser cela ne va le faire qu'au 1er niveau et les données seront inexploitables.

Donc soit tu ne sérialises pas, soit tu prépares un tableau et tu le sérialises :) 

if (!Configuration::getGlobalValue('ANTISPAMCONTACT_LIST')) {
         $value = 'a:15{i:0;s:15:"www.lehu201.com";i:1;s:16:"www.longhu90.com";i:2;s:13:"www.zb557.com";i:3;s:14:"www.hubofa.com";i:4;s:15:"www.sega113.com";i:5;s:8:"@166.com";i:6;s:8:"@163.com";i:7;s:7:"@qq.com";i:8;s:10:"huyabo.com";i:9;s:10:"xieyiceshi";i:10;s:13:"www.sega7.com";i:11;s:15:"www.new8882.com";i:12;s:15:"www.sega117.com";i:13;s:15:"www.ZHOUJI6.COM";i:14;s:10:"sj5666.com";}';
         if (!Configuration::updateGlobalValue('ANTISPAMCONTACT_LIST', $value)) {
            return false;
         }
      }

// Soit:

if (!Configuration::getGlobalValue('ANTISPAMCONTACT_LIST')) {
         $array = array("www.lehu201.com", "www.longhu90.com", "www.zb557.com", "www.hubofa.com","www.sega113.com", "@166.com", "@163.com", "@qq.com", "huyabo.com", "xieyiceshi", "www.sega7.com", "www.new8882.com", "www.sega117.com", "www.ZHOUJI6.COM", "sj5666.com");
         if (!Configuration::updateGlobalValue('ANTISPAMCONTACT_LIST', serialize($array))) {
            return false;
         }
      }

 

Link to comment
Share on other sites

Bonjour à tous, le site de ma mère est spammé par qq.com notamment avec près de 45000 messages !!!! Ma mère est en panique !

SVP comment faire pour 

1/ les supprimer du back-office

2/ faire en sorte que cela n'arrive plus.

Je tiens à signaler que je ne suis pas expert, mais si on m'explique je devrais y arriver !!!

 

Merci beaucoup pour votre aide

 

François

 

site web de ma mère : deshistoiresabroder.com

Link to comment
Share on other sites

Merci beaucoup Eolia pour cette réponse mais encore une fois je ne suis pas développer ! Je suis débutant, je bidouille mais c'est tout.

De ce que je comprends, je copie ce code et donc n'ai pas besoin d'acheter un module de captcha ?

Si oui, pouvez-vous me dire à quel endroit je dois copier ce code dans mon BO ?

Et dans un second temps, quand j'aurai donc un captcha installé, le BO pourra identifier les 40000 messages déjà reçus comme du spam et donc je pourrai les supprimer d'un coup ?

 

Merci beaucoup pour vos réponses et merci vraiment de prendre le temps de m'aider.

 

François

Link to comment
Share on other sites

Bonjour,

J'ai bien suivi le correctif de @doekia avec quelques difficultés :

- Dans le correctif : il faut changer le index.php et le contact-form.tpl, et dans 2 autres sujets du forum, c'est indiqué index.php et header.tpl .

Dans les deux cas, je n'ai pas réussi a faire fonctionner, je me suis rabattu sur le tuto : https://www.arnaud-merigeau.fr/add-recaptcha-to-prestashop/

Le Captcha à l'air fonctionnel depuis le formulaire de contact. et je ne recois plus une bardée de mail de sav

Le Hic : Mon sav se remplit toujours de 5 messages par seconde, et seulement lorsque la boutique est activée.

Y'a t il un cache pour ces messages ? si oui, comment le vider ?

Cordialement

et merci pour vos solutions précédentes.

Link to comment
Share on other sites

Bon les gars va quand même falloir apprendre à lire avant de poster des messages ! 

Comme l'as dit eolia, ça fait une semaine que l'on répond à ce genre de message.

En plus si tu remontes 8 post sur ce sujet tu as une solution clé en main 

Jveux pas être méchant mais on peut pas s'amuser pendant 1 mois redire les mêmes choses

 

Je le répète une dernière fois ....

La solution la plus viable et la plus propre est celle du captcha ,

En revanche si c'est trop complexe à mettre en place j'ai créer un module presta qui bloque par des filtrages que l'on configure soit même (via le menu config du module)

Remonter quelque posté il est dispo

  • Like 1
Link to comment
Share on other sites

Non pour le BO, le captcha fonctionne en front office et empêche les nouveaux spams mais en aucun cas ne va "identifier" les spams déjà enregistrés.

Pour les supprimer, utilisez les filtres de recherche et supprimez-les à la main.Pour installer le re-captcha Google:

- Commencez par aller là et créez les clés pour votre domaine: https://www.google.com/recaptcha/admin

- Saisissez votre nom de domaine seul (pas de www ou http://, juste le domaine deshistoiresabroder.com)

- dans le fichier index.php, à la RACINE de votre site web, copiez ce code (remplacez l'existant) en mettant votre clé SECRETE à la place de XXXXXXX-the-secret-key-XXXXXXXXXX et en conservant les guillemets simples):

<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
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',
									'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));
	}
}
require(dirname(__FILE__).'/config/config.inc.php');
Dispatcher::getInstance()->dispatch();

Dans le contact-form.tpl vous copiez ce code en début de fichier après les commentaires s'il y en a, en mettant votre clé PUBLIQUE à la place de XXXXXXX-the-public-key-XXXXXXXXXX et en conservant les guillemets simples):

<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>

Vérifiez que votre formulaire <form> a bien la classe "contact-form-box" sinon ajoutez-là

Edited by Eolia (see edit history)
Link to comment
Share on other sites

j'ai choisi quand j'ai écrit le snippet de le mettre dans header.tpl pour le cas où le formulaire de message soit a un endroit inhabituel (thème custom)

normalement ce formulaire est seulement dans la page contact. Donc que vous choisissiez de modifier header.tpl ou contact-form.tpl le résultat est dans 95% des cas le même.

Il faut ensuite modifier le index.php à la racine du web (si vous oubliez, plus personne ne pourra envoyer de message)

 

Edited by doekia (see edit history)
Link to comment
Share on other sites

Bonjour,

Nous hébergeons plusieurs sites sur un serveur dédié et l'un d'entre eux a rencontré le même problème.
Nous avons pu bloquer les spams grâce à votre solution et nous en vous remercions.

Cependant, le flux de spams a créé un fort ralentissement de l'ensemble du serveur pendant la durée de l'attaque. Ce ralentissement apparaissait uniquement lorsque le captcha était utilisé pour bloquer les envois.
Dans les logs nous avons repéré le message suivant qui se répétait de nombreuses fois et qui semblait correspondre aux requêtes des robots spammeurs :

mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper, referer: http://www.le-site-attaque.fr/nous-contacter

Nous en avons discuté avec l'infogérant de notre serveur qui n'a pas trouvé de solution pérenne pour le moment.

Êtes vous au courant de ce type de comportement, si oui y a-t-il quelque chose à faire au niveau de prestashop?

En vous remerciant.

Link to comment
Share on other sites

Votre max_execution_time semble être inférieur au 30s de réglage par défaut.

Demandez à l'hébergeur quell est la limite et ajustez dans le code le sleep(25) à une valeur inférieure à celle de l'hébergement.

Vous pouvez également supprimer entièrement le sleep, dont est de ralentir le robot en face en le faisant attendre

 

Link to comment
Share on other sites

Merci pour votre réponse rapide.
Le max_execution_time est bien supérieur à 30s, donc j'imagine que ça ne vient pas de là.
L'attaque de spam étant terminée je ne peux pas vérifier les réglages en situation réelle.
Dans le doute, je vais réduire le sleep et surveiller le site de près.

Merci encore !
 

Link to comment
Share on other sites

Bonjour à tous,

Je rencontre un problème similaire à ceux évoqués et c'est pourquoi je me permets de relancer ce topic fort intéressant pour d'autres visiteurs à l'avenir.

En apportant des modifications au header.tpl et contact-form.tpl, celles-ci font crasher le site aux pages d'accueil du site et au formulaire de contact.
J'ai pu incrémenter le ReCAPTCHA Google mais à la lecture de la discussion, j'ai bien compris que son apparition ne suffit pas.

Encore faut-il le configurer et c'est donc ici que mes faibles connaissances en codage s'arrêtent.

Par ailleurs, un grand merci à @Thorfy pour ton module qui bloquent les SPAMs.
Je ne peux cependant recevoir d'autres message. Une erreur accompagnée de la formule "GET OUT BOT!!" apparaît même avec une adresse email valide.

Avez-vous des propositions/solutions depuis les derniers échanges ?

Merci beaucoup d'avance ! J'y suis depuis 48h et ce n'est pas évident ..

Link to comment
Share on other sites

Soit tu utilises le module de @Thorfy soit le snippet.

Si tu utilise le snippet, soit tu l'implemente dans le header.tpl, soit dans le contact-form.pl, il faut aussi la partie stipulée (entre les {* *}) dans ton index.php de la racine. Et bien sûr remplacer là clé publique dans le tpl et la clé privée dans l'index.php

 

GET OUT BOT me laisse penser que tu as utilisé le module, dans ce cas, revérifie simplement tes clés et la procédure liée au module.

Si le recaptcha apparait c'est que ta clé publique est conforme, il ne reste que la clé privé à vérifier

 

  • Like 1
Link to comment
Share on other sites

 

Quote

 

  1. [Tue Feb 06 14:42:11.364525 2018] [:error] [pid 7164:tid 140427881592576] [client 160.124.155.29:60066] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  2. [Tue Feb 06 14:40:02.316755 2018] [:error] [pid 13390:tid 140427839629056] [client 160.124.155.31:60597] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  3. [Tue Feb 06 14:39:38.386128 2018] [:error] [pid 13390:tid 140427789272832] [client 160.124.155.29:59715] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  4. [Tue Feb 06 14:37:19.224277 2018] [:error] [pid 13390:tid 140427730523904] [client 160.124.155.31:60255] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  5. [Tue Feb 06 14:37:04.877925 2018] [:error] [pid 13390:tid 140427839629056] [client 160.124.155.29:59370] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  6. [Tue Feb 06 14:34:45.136461 2018] [:error] [pid 13266:tid 140427722131200] [client 160.124.155.31:59902] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous


 

 

Voici les logs erreurs. J'imagine qu'il s'agit des tentatives de SPAMS toutes les 1 - 2 minutes.

J'ai une erreur 500 affichée (classique). J'active le debug mode et reviens rapidement.

Link to comment
Share on other sites

si tu as le message message get out bot même lorsque toi tu ecris un message c'est que tu as mal configuré les filtres. (il sont actif sur le contenu du message ET les mails)

Donc verifie bien que tu n'as pas des mots ou domaine trop générale dans tes filtres.

Link to comment
Share on other sites

Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "/home/clients/82b4f2b3306d530822df7119342e56e5/web/themes/transformer/header.tpl" on line 47 "&lt;meta name="robots" content="{if isset($nobots)}no{/if}index,{if isset($nofollow) &amp;&amp; $nofollow}no{/if}follow" /&gt;" - Unexpected ";", expected one of: "}" <-- thrown in /home/clients/82b4f2b3306d530822df7119342e56e5/web/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 47

 

Voici le code erreur affiché en appliquant le snippet

Link to comment
Share on other sites

En laissant les fichiers non modifiées, et en activant le module de Thorfy, voici les erreurs relevées du demo mode lorsque j'essaye de m'envoyer un message :
 

Quote

Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15
Notice: Undefined variable: blackListTriggered in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 37

 

Line 15 * DISCLAIMER
Line 36 :	public function postProcess()
Line 37 :	{
		if (Tools::isSubmit('submitMessage'))
		{
			$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
			$file_attachment = Tools::fileAttachment('fileUpload');
			$message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
			if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from))
				$this->errors[] = Tools::displayError('Invalid email address.');
			elseif (!$message)
				$this->errors[] = Tools::displayError('The message cannot be blank.');
			elseif (!Validate::isCleanHtml($message))
				$this->errors[] = Tools::displayError('Invalid message');
			elseif (!($id_contact = (int)Tools::getValue('id_contact')) || !(Validate::isLoadedObject($contact = new Contact($id_contact, $this->context->language->id))))
				$this->errors[] = Tools::displayError('Please select a subject from the list provided. ');
			elseif (!empty($file_attachment['name']) && $file_attachment['error'] != 0)
				$this->errors[] = Tools::displayError('An error occurred during the file-upload process.');
			elseif (!empty($file_attachment['name']) && !in_array(Tools::strtolower(substr($file_attachment['name'], -4)), $extension) && !in_array(Tools::strtolower(substr($file_attachment['name'], -5)), $extension))
				$this->errors[] = Tools::displayError('Bad file extension');
			else
			{
				$customer = $this->context->customer;
				if (!$customer->id)
					$customer->getByEmail($from);

				$id_order = (int)$this->getOrder();

				if (!((
						($id_customer_thread = (int)Tools::getValue('id_customer_thread'))
						&& (int)Db::getInstance()->getValue('
						SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm
						WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' AND cm.id_shop = '.(int)$this->context->shop->id.' AND token = \''.pSQL(Tools::getValue('token')).'\'')
					) || (
						$id_customer_thread = CustomerThread::getIdCustomerThreadByEmailAndIdOrder($from, $id_order)
					)))
				{
					$fields = Db::getInstance()->executeS('
					SELECT cm.id_customer_thread, cm.id_contact, cm.id_customer, cm.id_order, cm.id_product, cm.email
					FROM '._DB_PREFIX_.'customer_thread cm
					WHERE email = \''.pSQL($from).'\' AND cm.id_shop = '.(int)$this->context->shop->id.' AND ('.
						($customer->id ? 'id_customer = '.(int)$customer->id.' OR ' : '').'
						id_order = '.(int)$id_order.')');
					$score = 0;
					foreach ($fields as $key => $row)
					{
						$tmp = 0;
						if ((int)$row['id_customer'] && $row['id_customer'] != $customer->id && $row['email'] != $from)
							continue;
						if ($row['id_order'] != 0 && $id_order != $row['id_order'])
							continue;
						if ($row['email'] == $from)
							$tmp += 4;
						if ($row['id_contact'] == $id_contact)
							$tmp++;
						if (Tools::getValue('id_product') != 0 && $row['id_product'] == Tools::getValue('id_product'))
							$tmp += 2;
						if ($tmp >= 5 && $tmp >= $score)
						{
							$score = $tmp;
							$id_customer_thread = $row['id_customer_thread'];
						}
					}
				}
				$old_message = Db::getInstance()->getValue('
					SELECT cm.message FROM '._DB_PREFIX_.'customer_message cm
					LEFT JOIN '._DB_PREFIX_.'customer_thread cc on (cm.id_customer_thread = cc.id_customer_thread)
					WHERE cc.id_customer_thread = '.(int)$id_customer_thread.' AND cc.id_shop = '.(int)$this->context->shop->id.'
					ORDER BY cm.date_add DESC');
				if ($old_message == $message)
				{
					$this->context->smarty->assign('alreadySent', 1);
					$contact->email = '';
					$contact->customer_service = 0;
				}

				if ($contact->customer_service)
				{
					if ((int)$id_customer_thread)
					{
						$ct = new CustomerThread($id_customer_thread);
						$ct->status = 'open';
						$ct->id_lang = (int)$this->context->language->id;
						$ct->id_contact = (int)$id_contact;
						$ct->id_order = (int)$id_order;
						if ($id_product = (int)Tools::getValue('id_product'))
							$ct->id_product = $id_product;
						$ct->update();
					}
					else
					{
						$ct = new CustomerThread();
						if (isset($customer->id))
							$ct->id_customer = (int)$customer->id;
						$ct->id_shop = (int)$this->context->shop->id;
						$ct->id_order = (int)$id_order;
						if ($id_product = (int)Tools::getValue('id_product'))
							$ct->id_product = $id_product;
						$ct->id_contact = (int)$id_contact;
						$ct->id_lang = (int)$this->context->language->id;
						$ct->email = $from;
						$ct->status = 'open';
						$ct->token = Tools::passwdGen(12);
						$ct->add();
					}

					if ($ct->id)
					{
						$cm = new CustomerMessage();
						$cm->id_customer_thread = $ct->id;
						$cm->message = $message;
						if (isset($file_attachment['rename']) && !empty($file_attachment['rename']) && rename($file_attachment['tmp_name'], _PS_UPLOAD_DIR_.basename($file_attachment['rename'])))
						{
							$cm->file_name = $file_attachment['rename'];
							@chmod(_PS_UPLOAD_DIR_.basename($file_attachment['rename']), 0664);
						}
						$cm->ip_address = (int)ip2long(Tools::getRemoteAddr());
						$cm->user_agent = $_SERVER['HTTP_USER_AGENT'];
						if (!$cm->add())
							$this->errors[] = Tools::displayError('An error occurred while sending the message.');
					}
					else
						$this->errors[] = Tools::displayError('An error occurred while sending the message.');
				}

				if (!count($this->errors))
				{
					$var_list = array(
									'{order_name}' => '-',
									'{attached_file}' => '-',
									'{message}' => Tools::nl2br(stripslashes($message)),
									'{email}' =>  $from,
									'{product_name}' => '',
								);

					if (isset($file_attachment['name']))
						$var_list['{attached_file}'] = $file_attachment['name'];

					$id_product = (int)Tools::getValue('id_product');

					if (isset($ct) && Validate::isLoadedObject($ct) && $ct->id_order)
					{
						$order = new Order((int)$ct->id_order);
						$var_list['{order_name}'] = $order->getUniqReference();
						$var_list['{id_order}'] = (int)$order->id;
					}

					if ($id_product)
					{
						$product = new Product((int)$id_product);
						if (Validate::isLoadedObject($product) && isset($product->name[Context::getContext()->language->id]))
							$var_list['{product_name}'] = $product->name[Context::getContext()->language->id];
					}

					if (empty($contact->email))
						Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment);
					else
					{
						if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]',
							$var_list, $contact->email, $contact->name, $from, ($customer->id ? $customer->firstname.' '.$customer->lastname : ''),
									$file_attachment) ||
								!Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, $contact->email, $contact->name, $file_attachment))
									$this->errors[] = Tools::displayError('An error occurred while sending the message.');
					}
				}

				if (count($this->errors) > 1)
					array_unique($this->errors);
				elseif (!count($this->errors))
					$this->context->smarty->assign('confirmation', 1);
			}
		}
	}

 

Link to comment
Share on other sites

Quelles modifications faut-il apporter au fichier ContactController.php ?

EDIT : Autant pour moi, je n'étais pas sur le bon fichier. J'étais dans controllers/front/ par méchanisme.

Voici les lignes

    foreach ($blackListsMessage as $string) {
            $blackListTriggered = stripos($message, $string);
            if ($blackListTriggered !== false) {
				break;   
            }
            $blackListTriggered = stripos(Tools::getValue('from'), $string);
            if ($blackListTriggered !== false) {
				break;   
            }
         }
         if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from)) {
            $this->errors[] = Tools::displayError('Invalid email address.');
         } elseif (!$message) {
            $this->errors[] = Tools::displayError('The message cannot be blank.');
         } elseif (!Validate::isCleanHtml($message)) {
            $this->errors[] = Tools::displayError('Invalid message');
         } elseif (!($id_contact = (int) Tools::getValue('id_contact')) || !(Validate::isLoadedObject($contact = new Contact($id_contact, $this->context->language->id)))) {
            $this->errors[] = Tools::displayError('Please select a subject from the list provided. ');
         } elseif (!empty($file_attachment['name']) && $file_attachment['error'] != 0) {
            $this->errors[] = Tools::displayError('An error occurred during the file-upload process.');
         } elseif (!empty($file_attachment['name']) && !in_array(Tools::strtolower(substr($file_attachment['name'], -4)), $extension) && !in_array(Tools::strtolower(substr($file_attachment['name'], -5)), $extension)) {
            $this->errors[] = Tools::displayError('Bad file extension');
         } elseif ($blackListTriggered !== false){
		    $this->errors[] = Tools::displayError('GET OUT BOT!!');

 

Edited by mikaelnatech
ERREUR FICHIER (see edit history)
Link to comment
Share on other sites

Voici le début du fichier

<?php

class ContactController extends ContactControllerCore {

    /*
	* module: antispamcontact
	* date: 2018-02-06 15:12:03
	* version: 1.2
	*/
	public function postProcess() {
      if (Tools::isSubmit('submitMessage')) {
         $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
         $file_attachment = Tools::fileAttachment('fileUpload');
         $message = Tools::getValue('message');          $blackListsMessage = unserialize(Configuration::getGlobalValue('ANTISPAMCONTACT_LIST'));

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...