Aide pour lutter contre le flood

Fermé
namrouch Messages postés 5 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 14 janvier 2015 - Modifié par namrouch le 14/01/2015 à 09:58
jordane45 Messages postés 38147 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 - 14 janv. 2015 à 11:05
Bonjour, 

Sur mon "petit" site web , dont je n'ai même pas travaillé le référencement google, je viens de trouver une liste de msg très étranges comme vous pouvez le voir : (plus que 400 msg..)

Kraig : A few months <a href=" [ (lien de pub) /] ">propranolol buy no prescription</a> "Dollar buying will continue. With rising Treasury yields,there is no incentive to sell the dollar, particularly againstthe euro," said Masashi Murata (le 13/01 à 12h21min)

Je n'ai aucune idée de ce qui c'est passé ...
J'ajoute même que j'ai fait de telle façon qu'une cookie 'temps', avec ne durée de vie de 10sec, se crée après chaque envoi et les msg suivants ne sont acceptés que si elle n'existe plus.

Avez vous une idée comment ça c'est passé, ça a dépassé mon code, et comment m'en protéger ?

Voici le code de la zone de txt
<form method="post" action="../traitement/confirmer_chat.php" enctype="multipart/form-data" >
    <label for="nom"> Nom : </label>
    <input type="text" name="nom" id="nom" placeholder="20 caractères maximum" maxlength="20" required /> </br>
     
    <label for="message"> Votre message : </label>
    <input type="text" name="message" id="message" maxlength="255" required /> </br>
     
    <!-- <label for="photo" > Photo : </label>
    <input type="file" name="photo" id="photo" /> </br>  -->
     
    <input type="submit" value="Envoyer" onclick="this.disabled=true;this.value='Envoi en cours...';this.form.submit();" />
     
</form>


celui de liste des messages

<?php
 
    include_once("../connexion_sql.php");
     
     
    $req3 = $bdd->query (" SELECT DISTINCT id, nom, message, DATE_FORMAT(date, '(le %d/%m à %Hh%imin)') AS temps FROM chat ORDER BY id DESC ");
 
     
    while ( $a = $req3->fetch() ) { ?>
    <p> <mark <?php if ( $a['nom'] == "raisingphoenix" ) { echo " class=\"admin\" "; $a['nom'] = "Hatem" ; } else { echo " class=\"nom\" "; }  ?>  >
     
    <?php echo ''.htmlspecialchars($a['nom']).' :' ?> </mark>
    <a
    <?php //if ( $a['nom'] == "raisingphoenix" ) { echo " class=\"admin2\" "; } //else { echo " class=\"nom\" "; } ?>  > 
    <?php echo ' '.htmlspecialchars($a['message']).'' ?> </a>
     
 
    <em class="date"> <?php echo ' '.$a['temps'].'  '; ?> </em>   </p>
    <?php
    }


Et celui de la page de confirmation

<?php
 
    if (isset ($_COOKIE['temps'])) {
     
        header('Location:../pages/acceuil.php?wait=true');
        exit();
         
    }
     
    include_once("../connexion_sql.php");
     
    //Nom et message
    if (
    isset($_POST['message'], $_POST['nom'])
    AND !empty($_POST['message'])
    AND !empty($_POST['nom'])
    AND strlen($_POST['nom']) <=20
    AND strlen($_POST['message']) <=255     )
    {
     
     
    $req = $bdd->prepare (' INSERT INTO chat(nom, message, date) VALUES(?, ?, NOW()) ') ;
    $req-> execute(array($_POST['nom'], $_POST['message'])) ;
    $req->closeCursor() ;
    setcookie('temps', 'lol', time() + 10, null, null, false, true);
}
 
        header('Location:../pages/acceuil.php');
     
?>

1 réponse

jordane45 Messages postés 38147 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 650
14 janv. 2015 à 11:05
Bonjour,

Je n'ai pas regardé en détail ton message...
mais déjà :
qu'une cookie 'temps', avec ne durée de vie de 10sec, se crée après chaque envoi et les msg suivants ne sont acceptés que si elle n'existe plus.

N'oublie pas qu'on peut ne pas accepter les cookie ...et donc dans ce cas... ils ne se créent pas sur la machine et ainsi ta "protection" ne marche pas...

L'idéal pour ça serait plutôt d'enregistrer l'IP de visiteur et de faire le même mécanisme que ton cookie en te basant cette fois sur cette donnée stockée dans ta BDD.....

Tu pourrais aussi mettre en place un système de Black List ... se basant sur des mots clés écris dans le message .... (et là par exemple tu pourrais filtrer sur l' URL qu'ils mettent dans leurs messages....)
Tu peux aussi essayer de mettre une Black-list sur les IP ...(mais bon.. en général ce type de robots changent régulièrement d' IP )




0