Empecher le spam de formulaire php ?

WRInaute impliqué
Hello,

Savez vous comment faire pour minimiser le spam des formulaires de contact qui envois un mail en php ? ( j'aimerais éviter d'utiliser un captcha )

Je me prend des tonnes de mails de robots :/
 
WRInaute accro
Tiens, voilà un exemple : -http://www.thewindpower.net/01-webmaster-eolien.php

Avec un test sur le contenu du champ antispam.

Totalement efficace.
 
WRInaute occasionnel
Stellvia a dit:
Hello,

Savez vous comment faire pour minimiser le spam des formulaires de contact qui envois un mail en php ? ( j'aimerais éviter d'utiliser un captcha )

Je me prend des tonnes de mails de robots :/

Change l'adresse de la page... en évitant de lui donner un nom "générique".
 
WRInaute impliqué
Hello,
Savez vous comment faire pour minimiser le spam des formulaires de contact qui envois un mail en php ? ( j'aimerais éviter d'utiliser un captcha )
Je me prend des tonnes de mails de robots :


pour les amateurs de codes a mettre dans un formulaire, le 2em
80% des spammeurs dans mon cas, ils postent ( les robots) un Href, un http ou il ne faut pas. Dans ce cas il faut prevenir les visiteurs avant que le lien n'est pas autorisé a cet endroit.

}
$pattern ="(top2.info|kliviper|wero@fsvx.com|juee.ca|mochar.com)";
if (ereg($pattern,$vEmail) && ($erreur<>1)){
echo "<br><p class='red'><center><b>Vous n'êtes pas autorisé !</b></center></p>";
$erreur=1;
}
$pattern ="(http|<a href)";
if (ereg($pattern,$vMessage) && ($erreur<>1)){
echo "<br><p class='red'><center><b>Merci de ne pas mettre une adresse web dans la description !</b></center></p>";
$erreur=1;

}
[/code]
 
WRInaute occasionnel
Une façon efficace d'éviter de voir son formulaire PHP se transformer en redoutable serveur de spam est de se prémunir contre les injections d'en-tête. Ceux qui ne savent de quoi je parle pourront lire avec intérêt cet article qui, bien qu'il date de 2003, est toujours utile.
 
WRInaute impliqué
Victor BRITO a dit:
Une façon efficace d'éviter de voir son formulaire PHP se transformer en redoutable serveur de spam est de se prémunir contre les injections d'en-tête. Ceux qui ne savent de quoi je parle pourront lire avec intérêt cet article qui, bien qu'il date de 2003, est toujours utile.

Merci , c'est ce genre d'article que je cherchais justement .

Le problème est que la solution proposé

Code:
if (eregi("\r",$from) || eregi("\n",$from)){
die("Why ?? :(");
}

Ne fonctionne pas , c'est le symbole \ qui bloque et fait bugué eregi ( essayé vous verrez )
 
WRInaute impliqué
domdom26 a dit:
Dépêche toi vite de corriger la situation, car ces spameurs utilisent ton formulaire pour envoyer du spam à d.autres personne et ton ip sera blaclisté pour l'envoie de courriel :(

http://www.blacklistedip.com/

si jamais tu te fais blacklisté ;)
Je pense quand même qu'il vérifie l'adresse mail entrée dans le formulaire avant d'envoyer le mail :wink:
 
WRInaute occasionnel
Stellvia a dit:
Le problème est que la solution proposé

Code:
if (eregi("\r",$from) || eregi("\n",$from)){
die("Why ?? :(");
}

Ne fonctionne pas , c'est le symbole \ qui bloque et fait bugué eregi ( essayé vous verrez )
Essaie avec ce code :
Code:
if (preg_match("/\r/i",$from) || preg_match("/\n/i",$from)){
die("Why ?? :(");
}
 
WRInaute impliqué
Salut Victor BRITO

Merci pour ton aide , mais ca ne fonctionne pas non plus .

Pour être plus clair le mail avec comme expediteur \n ou \r est quand même envoyer , eregi ne detecte pas \n

( c'est toujours \ qui fait déconner )
 
WRInaute impliqué
SAlut tout le monde

Bon ... je suis bien embeté , je continus a recevoir des dizaines de mails de spam par jour , qui sont envoyé depuis mon formulaire de contact .

J'aimerais bien comprendre comment faire pour empecher ca , ca me saoule .

Je verifie pourtant l'email de l'expediteur mais rien n'y fait , les mails que je recois ont le sujet modifié , du style :

[Edit OTP : texte supprimé.
Tu veux faire sortir WRI sur des requêtes douteuses ? :lol: ]


bref vous voyez le genre .....
 
WRInaute passionné
pas eu le temps de lire l'article mais je presume qu'il traite d'injection de clrf dans la variable to dans le but de rajouter des bc ou cc

les symboles cl et rf sont des caractères invisibles en mode texte donc ils ont la representation \n \r

et php peut très bien les traiter dans leurs formats invisibles par les fonctions chr() et ord()

on trouvera la correspondance en index dans la table ascii

http://asciitable.com/

CR = index decimal 13
LF = index decimal 10

rog
 
WRInaute accro
Stellvia a dit:
SAlut tout le monde

Bon ... je suis bien embeté , je continus a recevoir des dizaines de mails de spam par jour , qui sont envoyé depuis mon formulaire de contact .

J'aimerais bien comprendre comment faire pour empecher ca , ca me saoule .

Je verifie pourtant l'email de l'expediteur mais rien n'y fait , les mails que je recois ont le sujet modifié , du style :

[Edit OTP : texte supprimé.
Tu veux faire sortir WRI sur des requêtes douteuses ? :lol: ]


bref vous voyez le genre .....

j'ai peut être pas tout compris mais si Stellvia reçoit le spam c'est pas une histoire d'injection car ça ser surtout a changer le destinataire.

classique, perso j'ai juste ajouté un champ dans mes formulaire précédé d'une question idiote genre 'quel est la couleur de cette voiture rouge ? ' je ne fais pas 'tourner la question, c'est tjs la même et plus de spam. (juste une ligne de test a faire sur le script de traitement du formulaire pour voir si la réponse est bien rouge) ...
 
WRInaute impliqué
Sisi c'est de l'injection car ils arrivent même à modifier le titre de message par ce qu'ils veulent , et je supose que le mail n'est pas envoyé qu'a moi .

Je vais voir du coté des fonctions fonctions chr() et ord() , je reviens pour donner des nouvelles .

Pour lothar , je ne veux pas mettre de catcha car je ne veux pas ennuyer les gens avec un catcha , je prefererais éviter , mais si vraiment je trouve pas de solution pour filtrer ces abus par php , et bien je mettrais un captcha :/
 
WRInaute passionné
oui mais au passage bidule machin

le captcha ne protege pas contre les injections headers qui visent à utiliser ton script à des fins frauduleuses voir carrément criminelles

rog
 
WRInaute discret
rog a dit:
oui mais au passage bidule machin

le captcha ne protege pas contre les injections headers qui visent à utiliser ton script à des fins frauduleuses voir carrément criminelles

rog

Je suis pas fan du Captcha non plus. Il est souvent contraignant et bloque les personnes malvoyantes..
 
WRInaute passionné
lol

ce que je voulais dire c'est qu'il faut au moins les deux

- un système pour bloquer les bots
- un système pour bloquer les injections headers

à savoir que une verification chr(13) ou 10 n'est pas suffisante pour bloquer l'injection avec une injection sur le socket

rog
 
WRInaute discret
rog a dit:
lol

ce que je voulais dire c'est qu'il faut au moins les deux

- un système pour bloquer les bots
- un système pour bloquer les injections headers

à savoir que une verification chr(13) ou 10 n'est pas suffisante pour bloquer l'injection avec une injection sur le socket

rog

Et mon post ne concernait que les attaques robot
 
WRInaute impliqué
OTP a dit:
Tiens, voilà un exemple : -http://www.thewindpower.net/01-webmaster-eolien.php

Avec un test sur le contenu du champ antispam.

Totalement efficace.


Bonjour, je suis conscient que je remonte un vieux topic :O

OTP, ton système anti-spam m'interresse... Mais je suis nul en php :)

Est ce que te demander les sources est déplacé ??

Merci d'avance
 
WRInaute accro
Dans le fichier que contient le formulaire :

Code:
<form method="post" action="mail.php">	
<p><input type="text" value="Nom" size="35" name="sender_name" onfocus="javascript:this.value=''" /></p>
<p><input type="text" value="Adresse mail" size="35" name="sender_email" onfocus="javascript:this.value=''" /></p>
<p><input type="text" value="Tapez ici le mot 'antispam'" size="35" name="antispam" onfocus="javascript:this.value=''" /></p>
<p><textarea name="message" cols="40" rows="5"></textarea></p>
<p><input type="submit" value="Envoyer" /></p>
</form>

Dans le fichier mail.php qui s'affiche après le clic sur le bouton :

Code:
<?php
if ($antispam == 'antispam')
{
	$msg = "Nom:\t$sender_name\n";
	$msg .= "Mail:\t$sender_email\n";
	$msg .= "Message:\t$message\n\n";

	$recipient = "webmaster@tonsite.net";
	$subject = "Formulaire rempli par un visiteur";

	$mailheaders = "From: $sender_email\n";
	$mailheaders .= "Reply-To: $sender_email\n\n";

	mail($recipient, $subject, $msg, $mailheaders);

	echo "<p>Votre message a été envoyé.</p>";
	echo "<p>Il sera traité dès que possible.</p>";
}
else
{
	echo "<p>Demande non prise en compte, sécurité antispam non satisfaite.</p>";
	echo "<p>Merci de saisir 'antispam' dans le champ de sécurité (le troisième).</p>";
	echo "<p><a href=\"Javascript:history.go(-1)\">Retour au formulaire</a></p>";
}
?>

On peut largement améliorer ça, sans doute.
 
WRInaute passionné
OTP a dit:
Dans le fichier que contient le formulaire :

Code:
<form method="post" action="mail.php">	
<p><input type="text" value="Nom" size="35" name="sender_name" onfocus="javascript:this.value=''" /></p>
<p><input type="text" value="Adresse mail" size="35" name="sender_email" onfocus="javascript:this.value=''" /></p>
<p><input type="text" value="Tapez ici le mot 'antispam'" size="35" name="antispam" onfocus="javascript:this.value=''" /></p>
<p><textarea name="message" cols="40" rows="5"></textarea></p>
<p><input type="submit" value="Envoyer" /></p>
</form>

Dans le fichier mail.php qui s'affiche après le clic sur le bouton :

Code:
<?php
if ($antispam == 'antispam')
{
	$msg = "Nom:\t$sender_name\n";
	$msg .= "Mail:\t$sender_email\n";
	$msg .= "Message:\t$message\n\n";

	$recipient = "webmaster@tonsite.net";
	$subject = "Formulaire rempli par un visiteur";

	$mailheaders = "From: $sender_email\n";
	$mailheaders .= "Reply-To: $sender_email\n\n";

	mail($recipient, $subject, $msg, $mailheaders);

	echo "<p>Votre message a été envoyé.</p>";
	echo "<p>Il sera traité dès que possible.</p>";
}
else
{
	echo "<p>Demande non prise en compte, sécurité antispam non satisfaite.</p>";
	echo "<p>Merci de saisir 'antispam' dans le champ de sécurité (le troisième).</p>";
	echo "<p><a href="Javascript:history.go(-1)"">Retour au formulaire</a></p>";
}
?>

On peut largement améliorer ça, sans doute.

J'utilise une variante de ce principe sur mes divers formulaires. La différence est que je cache le champs à tester par un display none via css et je verifie si le champs est vide avant d'envoyer le formulaire.

Je suis parti du principe que les robots remplissent systematiquement les champs avec du contenu aleatoire.
Hors un humain lui, ne voyant pas le champs de test, ben.... il ne le rempli pas.

DOnc si le champs de test est vide > j'envoie le formulaire, et si il est renseigné, je n'envoie rien.

Cette solution fonctionne pour moi depuis plus d'un an sur plusieurs sites.
 
WRInaute accro
En effet, encore plus simple et plus facile pour le visiteur. Je note pour la prochaine version.
 
WRInaute discret
perso j'ai utiliser un petit script en JavaScript qui modifie un champ caché et comme la plupart des robots n'ont pas le JavaScript d'activé je suis protégé !

Installé ici : -http://www.commentarium.fr/poster.html
 
WRInaute impliqué
Bonjour,

J'ai une erreur :

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in mail.php on line 19
 
WRInaute accro
Il y a une double quote en trop dans le dernier echo mais ça ne doit pas expliquer cette erreur. Essaie quand même (je vais corriger plus haut).
 
WRInaute accro
Tant mieux, je n'y croyais pas trop. Cette erreur vient du fait que j'ai simplifié le code pour l'exemple et un peu oublié un ".
 
WRInaute impliqué
oli004 a dit:
J'utilise une variante de ce principe sur mes divers formulaires. La différence est que je cache le champs à tester par un display none via css et je verifie si le champs est vide avant d'envoyer le formulaire.

Je suis parti du principe que les robots remplissent systematiquement les champs avec du contenu aleatoire.
Hors un humain lui, ne voyant pas le champs de test, ben.... il ne le rempli pas.

DOnc si le champs de test est vide > j'envoie le formulaire, et si il est renseigné, je n'envoie rien.

Cette solution fonctionne pour moi depuis plus d'un an sur plusieurs sites.


Salut, puis-je te demander tes sources aussi afin d'avoir une variante...

Merci d'avance
 
Discussions similaires
Haut