Continue a recevoir des spam meme avec captcha...:(

WRInaute discret
bonjour a tous,

J'ai installé ya quelques jours un captcha sur mon formulaire mail.

http://www.stylapar.com/contact.php

Mais je continu a recevoir des spams.
Ce qui m'etonne c'est que quand un mail et envoyé par le biais de mon formulaire et que je code et rentré, je recois un mail du type :

Code:
PHPSESSID:fed36aec026d7a4625222bca2c3eefcc
email:email
nom:nom
message:
code:[b]waw9n[/b]
submit:Envoyer/Send

Ce qui me montre que le code est bien rentré, mais sur tt les spam que je recois je n'ai pas cette ligne "code"...
Quand je regarde l'entetes internet du message, je vois aussi que ça vien d'OVH, de mon mail pour mon mail mais j'ai un ligne qui m'intrigue :

Delivered-To: info@B

Qu'est ce que c'est ?

sinon voici mon code,
Formulaire :


Code:
<form action="crypt/verifier.php?<?php echo SID; ?>" method="post">
<input type="text" name="email" value="email" onFocus="javascript:this.value=''" />
<input type="text" name="nom"  value="nom" onFocus="javascript:this.value=''" />
<textarea name="message" rows="0" cols="0" style="overflow:auto"></textarea>
<div id="captcha">
<div id="code"><?php dsp_crypt(0,1); ?></div><input type="text" name="code" value="recopier le code" id="crypt" onFocus="javascript:this.value=''"/></div>
<input type="submit" name="submit" value="Envoyer/Send" id="send" />
</form>

et mon fichier de verification du code :

Code:
<?php  
$cryptinstall="cryptographp.fct.php";  
include $cryptinstall;  
if (chk_crypt($_POST['code'])) 
{
$separator = "\n"; 
$mail = '.........@..............';   
$subject = 'Informations'; 
$header = 'MIME-Version: 1.0' . $separator 
. 'Content-type: text/plain; charset=iso-8859-15' . $separator 
. 'From: ' . $mail;   
$message = '';   
foreach($_POST as $champ => $valeur) { 
$message .= $champ . ':' . $valeur . $separator; 
} 
mail($mail, $subject, $message, $header);   
header('Location: http://www.stylapar.com/mail.php');
} else {
header('Location : http://www.stylapar.com/contact.php');
}
?>

Y'aurai t'il une faille ?

Merci bcp a tous
 
WRInaute impliqué
ce qui est domage avec ton code, c'est que quand l'utilisateur fait une erreur de captcha, on arrive sur une page blanche. sans aucun message d'erreur

Ca m'arrive souvent de me tromper dans la recopie des numéros quand les images sont trop tordues et c'est toujours sympa de pouvoir récupérer son message et de ne pas devoir le retaper.

je pense que tu devrais travailler à une meilleur intégration de cryptographp et développer un peu plus ta condition 'else' pour revenir sur la page avec le message en cours de composition
 
WRInaute discret
exactement...effectivement je vais faire un retour sur la page contact, mais je ne sais pas comment faire en sorte que le message ne s'efface pas ??? Tu a un code pour moi ?

Et est il possible aussi de signaler que le code est faux ? Genre en changant le "value" (actuelement "recopiez le code") de la zone texte du code (par "code faux" en gras et pkoi pas en rouge) ?

Mercii
 
WRInaute passionné
Quand on utilise un code tout fait et disponible publiquement, les spammers le connaissent et savent le détourner. Il faudrait au moins changer les noms des fichiers.
Il me semble que l'on peut appeler le script PHP avec un code en paramètre. Il faut faire un test sur la source qui appelle le script.
Je vois bien un <?php echo SID ?> mais je ne vois de contrôle sur celui qui appelle le script.
 
WRInaute discret
OUCHHH....comme tu a pu le rendre compte, je ne connai vraiment rien en php !!! :cry:

Donc je ne comprend pas ce que tu entan pas faire un test sur la source ?! :D

Sinon si j'ai bien compri pour la suite, le controle doit etre ça : <?php dsp_crypt(0,1); ?> qui au coeur du formulaire dasn la <div id="code">.

C'est ça ?

merciiiii
 
WRInaute passionné
Non, ce que je veux dire, c'est que le script (qui est affiché dans le message) devrait vérifier que la page qui l'appelle est bien la page de formulaire listée en premier dans le message.
Sinon quelqu'un peut appeller le script à partir de son site avec des paramètres et donc passer outre le formulaire d'enregistrement.

Pour faire le test d'origine, on peut utiliser la variable PHP referer, si le serveur la supporte:

$x = $_SERVER['HTTP_REFERER'];.

if($x == "http://www.sitexxxx.com/page.html")
{
...ok...
}
else
{
die("Spam");
}
 
Discussions similaires
Haut