Olivier Miakinen
2009-01-29 00:23:37 UTC
[ copie et suivi vers fr.comp.lang.php ]
discussion. Attention, ce groupe est modéré.
vu à quel point celui-ci était une aubaine pour les spammeurs, et ne t'a
pas conseillé efficacement sur le moyen d'éviter que ton script spamme
la terre entière.
quelques milliers d'autres destinataires en même temps, sans que tu t'en
rendes compte.
lisible. Sauf erreur de ma part, le code suivant devrait faire la même
chose que celui que tu avais écrit sur une seule ligne.
1) Que vaut la variable $robot ? Est-ce que ça vient d'un $_POST ?
2) Que vaut la variable $header ? Est-ce que ça vient d'un $_POST ?
3) La variable $mailto vient-elle d'un $_POST ?
Si les trois variables $robot, $header et $mailto sont fixées en dur
dans ton code à des valeurs sans danger, c'est bon. Sinon, il faut faire
quelque chose ici.
Ceci mis à part, le problème le plus évident est celui de $subject que
tu initialises à partir de $_POST["table"] et $_POST["post"]. Si un
attaquant met dedans une valeur avec des sauts de ligne, il peut très
bien rajouter un millier d'entêtes « Bcc » (copie cachée) au courriel
que tu envoies, et donc spammer la terre entière.
Solution : mettre un $subject en dur, et ne mettre $_POST["table"] et
$_POST["post"] que dans $content :
$subject = "Commentaire sur la page web";
$content = "Table : $_POST[table]\nPost : $_POST[post]\n";
$content .= stripslashes($_POST["message"]);
Cordialement,
Salut tout le monde ;-)
J'suis peut-être pas dans le bon NG pour mon problème
En effet. Le bon groupe est fr.comp.lang.php, vers où je fais suivre laJ'suis peut-être pas dans le bon NG pour mon problème
discussion. Attention, ce groupe est modéré.
mais comme je sais qu'il y a des pro ici ;)
Ben c'est raté. Le seul qui t'a conseillé sur ton bout de code n'a pasvu à quel point celui-ci était une aubaine pour les spammeurs, et ne t'a
pas conseillé efficacement sur le moyen d'éviter que ton script spamme
la terre entière.
Je possède un très vieux site qui permet de mettre des commentaires sur des
fiches disques et le webmaster a disparu :(
Ca écrit même les commentaires dans des fichiers .txt ! :)
Problème : plein de robots me balancent de la "merdouille" dans ma boîte
mail.
Problème supplémentaire : ils peuvent balancer la même merdouille àfiches disques et le webmaster a disparu :(
Ca écrit même les commentaires dans des fichiers .txt ! :)
Problème : plein de robots me balancent de la "merdouille" dans ma boîte
mail.
quelques milliers d'autres destinataires en même temps, sans que tu t'en
rendes compte.
Vous n'auriez pas "un truc" pour limiter un peu ce spammage s'il vous plaît
? (je n'y connais pas grand chose et vu le vieux site j'ai pas trop envie de
payer cher pour faire installer un captcha :)
Note : j'ai remis le morceau un peu en forme pour qu'il soit plus? (je n'y connais pas grand chose et vu le vieux site j'ai pas trop envie de
payer cher pour faire installer un captcha :)
lisible. Sauf erreur de ma part, le code suivant devrait faire la même
chose que celui que tu avais écrit sur une seule ligne.
if(isset($_POST["table"]) && isset($_POST["post"])) {
$i=1;
while(file_exists("dat/post/$_POST[table]_$_POST[post]_$i.txt"))
{ $i++; }
@fwrite($fp, stripslashes($_POST["message"]));
@fclose($fp);
OpenDB();
$sql = "UPDATE mytracks SET posts=posts+1, post=NOW() ";
$sql.= "WHERE track=$_POST[post]";
$qry = mysql_query($sql);
ClosDB();
$headers = "From: $robot\r\n$header";
$subject = "Commentaire sur $_POST[table] #$_POST[post]";
$content = stripslashes($_POST["message"]);
@mail($mailto, $subject, $content, $headers);
header("location:./?$_POST[table]=$_POST[post]");
exit();
}
Questions :$i=1;
while(file_exists("dat/post/$_POST[table]_$_POST[post]_$i.txt"))
{ $i++; }
@fwrite($fp, stripslashes($_POST["message"]));
@fclose($fp);
OpenDB();
$sql = "UPDATE mytracks SET posts=posts+1, post=NOW() ";
$sql.= "WHERE track=$_POST[post]";
$qry = mysql_query($sql);
ClosDB();
$headers = "From: $robot\r\n$header";
$subject = "Commentaire sur $_POST[table] #$_POST[post]";
$content = stripslashes($_POST["message"]);
@mail($mailto, $subject, $content, $headers);
header("location:./?$_POST[table]=$_POST[post]");
exit();
}
1) Que vaut la variable $robot ? Est-ce que ça vient d'un $_POST ?
2) Que vaut la variable $header ? Est-ce que ça vient d'un $_POST ?
3) La variable $mailto vient-elle d'un $_POST ?
Si les trois variables $robot, $header et $mailto sont fixées en dur
dans ton code à des valeurs sans danger, c'est bon. Sinon, il faut faire
quelque chose ici.
Ceci mis à part, le problème le plus évident est celui de $subject que
tu initialises à partir de $_POST["table"] et $_POST["post"]. Si un
attaquant met dedans une valeur avec des sauts de ligne, il peut très
bien rajouter un millier d'entêtes « Bcc » (copie cachée) au courriel
que tu envoies, et donc spammer la terre entière.
Solution : mettre un $subject en dur, et ne mettre $_POST["table"] et
$_POST["post"] que dans $content :
$subject = "Commentaire sur la page web";
$content = "Table : $_POST[table]\nPost : $_POST[post]\n";
$content .= stripslashes($_POST["message"]);
Cordialement,
--
Olivier Miakinen
Olivier Miakinen