Jump to content

Hacké - faille sécurité formulaire mail


Recommended Posts

Tiens salut Eolia ^^ ah bah sur Gandi ça ralentissait considérablement le chargement d’où cette petite précision. Je suis tombé sur un de tes posts à propos du correctif > modules > "sendtoafriend" >

sendtoafriend_ajax.php  > if (!$friendName || !$friendMail || !$id_product || !$module->context->cookie->customer_firstname)

Je me permet de poser le lien ici car c'est en lien direct : https://www.prestashop.com/forums/topic/525811-spam-sent-from-my-website-using-send-to-a-friend-feature/

Ils auraient pu l'inclure dans la mise à jour du module...

Link to comment
Share on other sites

Tu ferais aussi bien de configurer une bonne fois pour toute ton varnish pour qu'il n'intercepte pas tes portions admin

et comme indiqué plus avant, renommer controllers/front/ContactController.php te permet de bloquer les posts et donc de ne pas saturer ton bouzin

  • Thanks 1
Link to comment
Share on other sites

Bonjour,

Merci pour le script et le tutoriel d'installation mais je n'arrive pas à faire afficher le captcha sur le formulaire de contact.
vous dites qu'il vous ajouter la classe contact-form-box dans le formulaire au niveau du tpl

donc dans le contact-form.tpl il faut remplacer

 <form action="{$request_uri|escape:'html':'UTF-8'}" method="post" class="std" enctype="multipart/form-data">

par

 <form action="{$request_uri|escape:'html':'UTF-8'}" method="post" class="std contact-form-box" enctype="multipart/form-data">


c'est ça ? (je préfère demander plutôt que faire une betise).  Merci pour votre aide.

 

 

Link to comment
Share on other sites

Bonjour,

J'ai mis le script dans les différents fichiers. Merci pour le code pour l'instant, ça se passe bien.

Par contre, si on ne coche pas la case (un humain peut oublier de cocher la case...), cela renvoie à une page où il y a juste écrit "not human" et pas de retour possible.

Y aurait-il un moyen de rester sur la page de contact ?

Merci pour vos éventuels réponses et bonne journée !

Link to comment
Share on other sites

Oui on peut mais ce n'est pas dans ce cas mais uniquement si vous rafraichissez la page.

Par défaut, si vous ne cochez pas, vous ne pouvez pas cliquer sur le bouton.

 

Le code suivant vous permet un retour à la page:

if (isset($_REQUEST['submitMessage'])){
	if (empty($_REQUEST['g-recaptcha-response'])){
		sleep(25);
		die('Bad request...');
	}
	$opts = array('http' =>
					array(
						'method'  => 'POST',
						'header'  => 'Content-type: application/x-www-form-urlencoded',
						'content' => http_build_query(
							array(
								'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
								'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['success'])){
		
		if(isset($_SERVER['HTTP_REFERER'])) {
			sleep(5);
			die('<p>Captcha Invalide</p><button><a href='.$_SERVER['HTTP_REFERER'].'>Retour au formulaire</a></button>');
		}
		sleep(25);
		die('Hello Bot! How are you ?');
	}
}

 

Link to comment
Share on other sites

Bonjour,

Je rencontre actuellement le problème de spams, donc j'ai mis en place la méthode expliquée ici (les bonnes parties du code respectivement dans le contact-form du template et l'index.php à la racine, avec mes clés publique et privée et -logiquement- aux bons endroits).

Le problème c'est que le captcha ne s'affiche pas sur le formulaire, donc quand on essaie d'envoyer un message via le formulaire, on tombe systématiquement sur le message "not human".
Pour le moment je laisse tel quel, histoire d'éviter de nouveaux spams, mais c'est  forcément ennuyeux...

Est-ce que quelqu'un saurait m'aiguiller pour arranger ça ?
Je précise que je ne suis pas développeur, donc malheureusement je n'y connais pas grand chose... ;)
Mon site est en 1.6.1.16

Merci !

Link to comment
Share on other sites

C'est normal qu'il ne s'affiche pas vous avez des erreurs js sur cette page:

 

image.png.5c26d1fde613e345139c20b1cc4c95b5.pngimage.png.d007a6bd33ee886d18c643af9528d784.png

{$('.lgcookieslaw_banner').hide();};;var jQuery144=$;;var fbpsc=fbpsc||new FpcModule('fbpsc');fbpsc.msgs={"id":"Vous n'avez pas renseign\u00e9 votre application ID","secret":"Vous n'avez pas renseign\u00e9 votre application Secret","callback":"Vous n'avez pas renseign\u00e9 votre application callback","scope":"Vous n'avez pas renseign\u00e9 les permissions de l'application","developerKey":"Vous n'avez pas renseign\u00e9 la cl\u00e9 d\u00e9veloppeur","socialEmail":"Vous n'avez pas renseign\u00e9 votre e-mail","delete":"Supprimer","prefixCode":"Vous devez d\u00e9finir le pr\u00e9fix du code","voucherAmount":"Vous devez d\u00e9finir le montant de la r\u00e9duction","voucherPercent":"Vous devez d\u00e9finir le pourcentage de la r\u00e9duction","apiType":"Vous devez d\u00e9finir une m\u00e9thode de connection"};fbpsc.sImgUrl='/modules/facebookpsconnect/views/img/';fbpsc.sAdminImgUrl='/img/admin/';fbpsc.sWebService='/modules/facebookpsconnect/ws-facebookpsconnect.php';var fox_token='hzb9JTHLwl61yuDS4-06xQ';(function(){var foxscript=document.createElement('script');foxscript.src='//funtasteecom.foxpush.net/foxpush_'+fox_token+'.js?v='+Math.random();foxscript.type='text/javascript';foxscript.async='true';var fox_s=document.getElementsByTagName('script')[0];fox_s.parentNode.insertBefore(foxscript,fox_s);})();;if(typeof kiwik==="undefined"){var kiwik={};}

Commencez par les corriger :) 

 

 

Link to comment
Share on other sites

Bonsoir à tous,

J'ai eu aussi ces problèmes d'email, et tant qu'à faire j'essaie de réutiliser le code pour la page de création de compte. Seulement ça ne marche pas, le recaptcha n'apparaît pas sur la page... J'ai collé dans authentification.tpl :

	<script>
        var googlecaptchasitekey = 'XXX'; /* TODO: tune this https://www.google.com/recaptcha/admin */
        $(document).ready(function(){
            var $forms = $('form.new_account_form');
            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>

J'ai aussi essayé avec form.account-creation_form.

Je me suis trompé ou j'ai oublié quelques chose ?

Si quelqu'un a une idée merci :)

 

Link to comment
Share on other sites

8 hours ago, doekia said:

Essais avec le mot "père-noel" pour voir !

 

1/ quel intérêt sur authentication?

2/ il est où le bouton submitMessage sur cette page

3/ il y a 3 forms dans cette page selon le contexte, tu veux faire quoi?

 

 

Bonjour,

L'intérêt est de ne pas avoir de compte spam. C'est pourquoi je voudrais mettre le recaptcha juste avant le bouton "S'inscrire" dans le formulaire "Créez votre compte". "account-creation_form" est l'id que j'ai trouvé et qui me semblait correspondre sur authentification.tpl...

 

Link to comment
Share on other sites

Bon, j'y suis arrivé, il fallait que je désinstalle un module Captcha !

Sincèrement je tiens aussi à vous remercier tous pour votre aide,

si je vous croise je vous paye un café, les chocolatines et les croissants et plus si affinités !! :))

Link to comment
Share on other sites

Bonjour,

 

Après avoir fait ce qui est décrit plus avant (insérer le js dans le fichier contact-form.tpl de mon thème avec la clé publique et le php dans index.php à la racine de mon site avec la clé secrète) , je n'ai pas de captcha sur mon formulaire.

 

Merci d'avance

Pilou

Edited by P i l o u (see edit history)
Link to comment
Share on other sites

Le js n'est pas chargé sur ta page, soit du cache, soit tu t'ai trompé de fichier, soit ... que sais-je

 

Pardon, le js est chargé mais tu n'a pas ajouté la classe au formulaire

<form action="/contactez-nous" method="post" class="std" enctype="multipart/form-data">

remplacer par

<form action="/contactez-nous" method="post" class="std contact-form-box" enctype="multipart/form-data">

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

J'ai ça dans contact-form.tpl, je remplace par ta ligne stp ?

<form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std" enctype="multipart/form-data">

 

Edit: j'ai juste ajouter contact-form-box" après class= "std et ça y est j'ai le captcha. :)

Merci beaucoup Doekia ;)

 

Edited by P i l o u (see edit history)
Link to comment
Share on other sites

5 hours ago, axel31 said:

 

Bonjour,

L'intérêt est de ne pas avoir de compte spam. C'est pourquoi je voudrais mettre le recaptcha juste avant le bouton "S'inscrire" dans le formulaire "Créez votre compte". "account-creation_form" est l'id que j'ai trouvé et qui me semblait correspondre sur authentification.tpl...

 

 

Je reviens sur mon histoire de recaptcha pour la création de compte. J'ai encore essayé mais ça ne fonctionne toujours pas... Je ne peux pas réutiliser le js proposé de la page de contact en changeant juste "form.contact-form-box" par  "form.account-creation_form" ?

Link to comment
Share on other sites

là c'est limite bouché à l'émeri hein^^

Relisez les posts et vous comprendrez.

Le script js réagit sur les formulaires qui ont la classe contact-form-box et le bouton submit ayant pour name submitMessage

Le script php réagit sur cette clé submitMessage

 

Donc maintenant c'est simple, vous pouvez les utiliser sur n'importe quel formulaire du site si vous placez le js dans le header.tpl de votre thème et que vous modifiez ces 2 script pour gérer plusieurs classes et name.

Si vous ne savez pas faire ou n'y connaissez rien en code contentez-vous de la protection de la page contact.

Link to comment
Share on other sites

C'est certain que je ne suis pas un expert en codage, mais j'essaie d'apprendre ce dont j'ai besoin au fur et à mesure ; et si j'essaie pas, c'est sûr que j'y arriverai pas...

Ce qui marchait pas c'est que j'essayais de faire marcher le js sur l'id du form, et non sur la class... Maintenant c'est bon. Voilà, peut être que ça peut resservir à quelqu'un

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

Excusez-moi de ressortir ce vieux post, mais j'ai un petit soucis avec l'intégration du captcha sur le formulaire de contact.

J'ai suivi la procédure à la lettre et le captcha apparait bien sur le formulaire de contact. Si on écrit un message et que l'on coche bien le captcha, tout fonctionne correctement.
Par contre, si on ne coche pas le captcha, ça mouline pendant quelques secondes, puis on arrive sur une page blanche où le message d'erreur "not human" apparait :o J'ai dû louper quelque chose mais je ne vois pas quoi. Pouvez-vous m'aider à régler ce petit problème svp?

Ce n'est pas si dérangeant car ça n'empêche en rien l'envoi des messages, et les spams sont bloqués. Mais j'aimerai tout de même éviter de perdre des éventuels clients parce qu'ils sont tombés sur cette page blanche :unsure:

Merci ;)

NB : Je suis sur Prestasop 1.6.1.4 avec le thème de base légèrement modifié.

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

Ils tombent sur une page "not human" quand ils tentent de bricoler le formulaire (comme des robots) pas en utilisation normale.

Si ton bouton d'envoi est resté actif, c'est peux-être que tes "légères" modif ne permettent plus au script de bloquer l'envoi

Je ne comprends pas cette nouvelle mode de ne pas donner vos urls pour demander de l'aide. Envoyez vous un mail à votre médecin pour une consultation ?

Pour info, le script a été mis à jour plusieurs fois depuis le debut de ce topic: http://area51.enter-solutions.com/snippets/74

Link to comment
Share on other sites

Eolia : Super merci, je vais essayer ce code :)
Juste une précision : pour la 2ème partie en javascript, est-ce que c'est à mettre dans le fichier header.tpl du thème ou dans contact form? Parce qu'il y a les 2 d'écrits et du coup j'ai un doute.


Doekia : J'ai modifié mon thème surtout pour supprimer des éléments graphiques, donc je ne pense pas que ça puisse altérer le fonctionnement du formulaire. Mais voici l'url de ma page si vous voulez regarder : https://www.savousepate.com/fr/contact

Edited by Savousepate
précisions à ajouter (see edit history)
Link to comment
Share on other sites

Heu quand j'arrive sur ta page https://www.savousepate.com/fr/contact

J'ai un beau capharnaüm dans le textarea où je suis censé taper mon texte (modif mineure?)

Dans cette partie j'ai du html avec un form (embarqué donc) dans le textarea. Je js crash donc à trouver ton bouton d'envoi.

Si l'affichage semble correct, la page elle est en vrac

 

PS: Comme dit @Eolia, il faut lire ou relire ce qui t'est proposé comme solution pour éviter de poser des questions harassantes

Link to comment
Share on other sites

il y a 8 minutes, Eolia a dit :

Bon, c'est clair, vous ne lisez rien de ce qu'on dit...

J'ai lu que vous aviez plusieurs fois dit qu'il fallait mettre le code javascript dans le fichier contact form.
Mais si je demande c'est que ce n'est pas clair car en 2ème partie de la marche à suivre (https://shop.devcustom.net/fr/content/9-mise-en-place-captcha?content_only=1), Il est écrit : "dans le fichier header.tpl".

Donc désolée d'avoir des doutes, avouez qu'il y a de quoi s'y perdre un peu :(

 

Link to comment
Share on other sites

Bah justement, dans cette page je ne parle pas de copier quoique ce soit dans contact-form.php (sauf si vous êtes en 1.4 ou avec des résidus de mise à jour).

Il y a 2 fichiers:

- l'un en php à mettre dans index.php

- l'autre en js à mettre dans header.tpl (après avoir vérifié que le contact-form.tpl contient bien la classe contact-form-box, sinon l'ajouter)

En fait, il suffit de lire et faire ce qui est écrit. Je ne peux pas faire plus.

 

  • Thanks 1
Link to comment
Share on other sites

il y a 24 minutes, doekia a dit :

J'ai un beau capharnaüm dans le textarea où je suis censé taper mon texte (modif mineure?)

Dans cette partie j'ai du html avec un form (embarqué donc) dans le textarea. Je js crash donc à trouver ton bouton d'envoi.

Si l'affichage semble correct, la page elle est en vrac

Je ne comprenais pas du tout de quoi vous parliez car pour moi la page est correctement affichée et le textarea est bien vide. Pour en être sûre j'ai vidé le cache de mon navigateur, et là j'ai vu le capharnaüm dont vous faisiez mention.
Je n'avais jamais vu cela auparavant, et je remarque que ça n'apparait plus après avoir accepté les cookies du site.
J'utilise le module "Alerte Cookie" pour afficher un avertissement à la 1ère visite d'un client. Pensez-vous que le soucis pourrait venir de là?

 

il y a 11 minutes, Eolia a dit :

Bah justement, dans cette page je ne parle pas de copier quoique ce soit dans contact-form.php.

Au temps pour moi, j'ai lu plusieurs posts sur le sujet, et j'ai dû m'embrouiller.

Du coup j'ai tout recommencé à zéro en suivant toute la procédure sur cette page : https://shop.devcustom.net/fr/content/9-mise-en-place-captcha?content_only=1
Le formulaire fonctionne correctement quand on coche le captcha. Mais sinon j'ai toujours ce message "not human" qui s'affiche quand le captcha n'est pas coché.

 

Link to comment
Share on other sites

il y a 8 minutes, doekia a dit :

Pourquoi y a-t-il plusieurs fois le code dans ta page?

Peux-tu désactiver le CCC des js que l'on puisse tracer ?

Dans quelle page?

Je veux bien désactiver le CCC si vous me dites ce que c'est et comment je dois faire ;)

Link to comment
Share on other sites

bonjour à tous

 

Sur une de mes installations, j'ai été confronté à un problème puisque après installation du captcha il m'était impossible de valider le form

 

Après inspection j'ai découvert, que l'api injectait la réponse non pas dans #g-recaptcha-response mais #g-recaptcha-

<textarea id="g-recaptcha-response-1" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none;  display: none; "></textarea>

 

J'ai donc modifié le script dans ce sens

$gresponse = $forms.find('#g-recaptcha-response, #g-recaptcha-response-1');

mais je vous avoue ne pas comprendre pourquoi sur cette boutique l'id est modifié.

 

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

  • 3 weeks later...

Bonjour,

Est-ce que ces modifications sont valables pour la version 1.4.8.2 ? J'ai modifié les 2 fichiers (header.tpl du thème / index.php de la racine), créé les 2 clés mais sans voir apparaître de Captcha sur le site. J'ai aussi tenté l'ajout de la ligne

<button class="g-recaptcha" data-sitekey="XXX" data-callback="YourOnSubmitFn">Submit</button>

juste avant l'input submit de contact-form.tpl (comme indiqué dans la doc Google), sans succès.

Merci de votre réponse.

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