Livre d'or hacké ??

WRInaute discret
Salut à tous,

Voilà, je crois que j'ai un gros problème avec le livre d'or installé sur mon site ... car depuis hier j'ai reçu deux messsages de ce genre :

Code:
Nom : Bf0QahQrB5
E-mail : dVXDy[at]L2r0m9B.com
Http://www.seun.ru/criea/cialis-price.html cialis price  http://www.seun.ru/criea/viagra-alternative.html viagra alternative  http://www.seun.ru/criea/online-phentermine.html online phentermine  http://www.seun.ru/criea/generic-cialis.html generic cialis  http://www.seun.ru/criea/viagra-purchase.html viagra purchase  http://www.seun.ru/criea/cialis-order.html cialis order

Le premier me disait même "Very nice site ! Thanks you very much !!" S'fout d'ma gueule en + :twisted: :twisted:

Je commence seulement à apprendre le php et mon script est, je crois, assez rudimentaire. Que puis-je faire comme tests pour éviter ce genre de choses ? Voyez-vous une autre faille qui permettrait de causer des dégâts + importants ?


Voici mon code (la connexion à la DB se fait via l'include) :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

<?php
include "conf.php";

if(isset($_POST['posted']))
{
if(!empty($_POST['pseudo']) AND !empty($_POST['email']) AND !empty($_POST['message']))
{

$pseudo=trim(ucfirst(addslashes($_POST['pseudo'])));
$email=trim(addslashes($_POST['email']));
$message=trim(ucfirst(addslashes($_POST['message'])));

$requete="INSERT INTO guestbook (pseudo, email, message, date) VALUES ('$pseudo','$email','$message','$date')";

$query=mysql_query($requete) OR die ("Impossible de prendre note de votre message<br>".mysql_error());

echo '<script language="JavaScript">;';
echo 'alert ("Merci pour votre message !");';
echo '</script>;';
}
else
{
echo ' <script language="JavaScript">;';
echo 'alert("Remplissez chaque champ svp ! Merci.");';
echo 'javascript:history.back(1);';
echo '</script>;';
}
}
?>

<head>

<title>Le livre d'or Karpeace</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="keywords" content="livre d'or,guestbook,karpeace,carp,carpe,carpes,poisson,poissons,message,mail" />
<meta name="description" content="Pour laisser des encouragements, insultes ou autres : le livre d'or" />
<meta name="author" content="KnockedMaster" />
<meta name="generator" content="Notepad" />
<meta name="robots" content="index,follow" />
<meta name="expires" content="never" />
<meta name="rating" content="General" />
<meta name="distribution" content="Global" />
<meta name="audience" content="all" />

<link href="../style.css" type="text/css" rel="stylesheet" />
<link href="../style_menu_ver.css" type="text/css" rel="stylesheet" />
<link rel="alternate" title="Test rss" type="application/rss+xml" href="http://www.karpeace.com/news.xml" />
<link rel="shortcut icon" href="http://www.karpeace.com/img/icones/favicon.ico" />

<script type="text/javascript" src="../menu.js"></script>

</head>

<body>

<table id="table_smileys" border="1" rules="none" summary="Ce tableau pr&eacute;sente une liste de smileys qui peuvent &ecirc;tre ins&eacute;r&eacute;s dans les messages">
<tr>
<td width="116" height="59" align="center"><img src="../img/smileys/30.gif" width="57" height="33" alt="Smiley" /> <br/> </td>
<td width="123" align="center"><img src="../img/smileys/2.gif" width="46" height="26" alt="Smiley" /> <br /> </td>
<td width="72" align="center"><img src="../img/smileys/27.gif" width="60" height="29" alt="Smiley" /> <br /> </td>
<td width="72" align="center"><img src="../img/smileys/6.gif" width="65" height="28" alt="Smiley" /> <br /> </td>

</tr>
<tr>
<td align="center">:'A </td>
<td align="center">:'B</td>
<td align="center">:'C</td>
<td align="center">:'D</td>
</tr>
<tr>
<td height="54" align="center"><img src="../img/smileys/28.gif" width="26" height="25" alt="Smiley" /> <br /> </td>
<td align="center"><img src="../img/smileys/21.gif" width="38" height="29" alt="Smiley" /> <br /> </td>
<td align="center"><img src="../img/smileys/25.gif" width="40" height="26" alt="Smiley" /> <br /> </td>
<td align="center"><img src="../img/smileys/32.gif" width="24" height="26" alt="Smiley" /> <br /> </td>
</tr>
<tr>
<td align="center">:'E</td>
<td align="center">:'F</td>
<td align="center">:'G </td>
<td align="center">:'H</td>
</tr>

<tr>
<td width="105" align="center"><img src="../img/smileys/13.gif" width="80" height="42" alt="Smiley" /> <br /> </td>
<td align="center"><img src="../img/smileys/29.gif" width="92" height="31" alt="Smiley" /> <br /> </td>
<td align="center"><img src="../img/smileys/36.gif" width="86" height="29" alt="Smiley" /> <br /> </td>
<td align="center"><img src="../img/smileys/45.gif" width="28" height="26" alt="Smiley" /> <br /> </td>
</tr>
<tr>
<td align="center">:'I </td>
<td align="center">:'J</td>
<td align="center">:'K</td>
<td align="center">:'L</td>
</tr>
</table>

<img id="livre-or" src="../img/gifs_animes/livre-or.gif" alt="Gif anim&eacute; livre d&prime;or" title="Laissez-nous un petit mot !" />

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><input type="hidden" name="posted" value="1" />
<fieldset>
<legend>Une p&prime;tite bafouille ...</legend>

<p><label for="pseudo">Pseudo : </label> <input type="text" id="pseudo" name="pseudo" /></p>
<br />
<p><label for="email">E-mail : </label> <input type="text" id="email" name="email" /> </p>
<br />
<center><textarea name="message" rows="10" cols="10"> </textarea></center>
<br />

<?php
$ip = $_SERVER["REMOTE_ADDR"];

echo "<center><p><b>Votre adresse IP est :</b> <font color=\"red\"> $ip </font></p></center>";
?>

<br />

<center><input type="submit" name="submit" value="Envoyer" /> &nbsp;
<input type="reset" name="reset" value="Réinitialiser" /></center>
</fieldset>
</form>



<?php
$start=0;
if (!$start) {$start=0;}
$rec = mysql_query("SELECT * FROM guestbook ORDER BY id DESC LIMIT ".$start.",".$nb);
while($row=mysql_fetch_assoc($rec))
{
$row['message']= str_replace(":'A","<img src=\"http://www.karpeace.com/img/smileys/30.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'B","<img src=\"http://www.karpeace.com/img/smileys/2.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'C","<img src=\"http://www.karpeace.com/img/smileys/27.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'D","<img src=\"http://www.karpeace.com/img/smileys/6.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'E","<img src=\"http://www.karpeace.com/img/smileys/28.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'F","<img src=\"http://www.karpeace.com/img/smileys/21.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'G","<img src=\"http://www.karpeace.com/img/smileys/25.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'H","<img src=\"http://www.karpeace.com/img/smileys/32.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'I","<img src=\"http://www.karpeace.com/img/smileys/13.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'J","<img src=\"http://www.karpeace.com/img/smileys/29.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'K","<img src=\"http://www.karpeace.com/img/smileys/36.gif\" alt=\"smiley\" />",$row['message']);
$row['message']= str_replace(":'L","<img src=\"http://www.karpeace.com/img/smileys/45.gif\" alt=\"smiley\" />",$row['message']);
?>


<table class="messages" border="0" align="center" cellpadding="4" cellspacing="0" width="90%" summary="Tableau d&prime;affichage des messages">
<tr>
<td class="ss_messages" width="100%">
&nbsp; <img src="../img/icones/email_open.gif" alt="Ic&ocirc;ne de message" /> &nbsp;De <span class="pseudo"><?php echo stripslashes($row['pseudo']); ?></span> le <?php echo $row['date']; ?> </td>
</tr>
<tr>
<td width="100%"> <?php echo nl2br(stripslashes($row['message']));?> </td>
</tr>
</table>

<br /><br />

<?php
}

mysql_free_result($rec);

$result=mysql_query("SELECT COUNT(*) FROM guestbook");
$row = mysql_fetch_row($result);
?>

<p align="center">
<?php

if ($start == "0") {
echo"<b><font size=\"1\" face=\"Verdana\">[1]</font></b>";
} else {
echo"<a href=\"index.php?start=0\">[1]</a>";
}
for($index=1;($index*$nb)<$row[0];$index++) {
$pg = $index+1;
if(($index*$nb)!=$start) {
print("<a href=\"index.php?start=".($index*$nb)."\">");
echo"[".$pg."]";
print("</a>");
}
else {
echo" <b><font size=\"1\" face=\"Verdana\">[".$pg."]</font></b>";
} }
?></p>

Merci d'avance pour votre aide :wink:





edit dd32 : merci de ne pas laisser les urls de ce type activées :wink:
ou sinon utilise plutôt le BBcode [ code ] que [ quote ]
 
WRInaute discret
Ou encore ajoute un code captcha (image avec des lettres aléatoires à recopier) pour te prémunir des robots spammeurs.
 
WRInaute discret
merci de ne pas laisser les urls de ce type activées Wink
ou sinon utilise plutôt le BBcode [ code ] que [ quote ]

Sorry ja pas fait attention :oops:

@ benben1973

Tu dois pouvoir interdire les IP des spameurs...

Avec un instruction dans le genre à celle qui suit, ça peut le faire ?

Code:
$ip =  $_SERVER["REMOTE_ADDR"];

if ($ip == xxx) { // l'ip en question si elle n'est pas dynamique  
....
}

Le procédé est p-ê simpliste mais bon, je commence hein ... Je vais vérifier les ip dans mes stats ...

Sinon modère en effaçant les messages au fur et à mesure

@benben

Ben je crois que c'est ce que je vais faire de toutes façons ... y'a de la lecture dans l'air :lol:

Merci pour votre aide

@ +
 
WRInaute impliqué
Vire simplement si le message contient un http ou un -www.

J'avais fait ça sur un site et plus de souci, un livre livre d'or c'est pour laisser des messages pas des liens.
 
WRInaute passionné
interdire l'ip des spammeurs c'est illusoire
tu peux par contre changer le nom de la page, ou le nom d'un champ, souvant fois ça suffit.
 
WRInaute discret
Vire simplement si le message contient un http ou un -www.

@bgdc : Bonne idée j'y avais pas pensé , simple en plus ....

interdire l'ip des spammeurs c'est illusoire

Je suis en train de m'en rendre compte :cry: :roll:

tu peux par contre changer le nom de la page, ou le nom d'un champ, souvant fois ça suffit.

Pas bête non plus :wink:

Je crois que je faire un petit melting pot de tout ça.

Encore merci à tous pour vos conseils :lol:

@+
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut