Modification de categorizator pour éviter le spam

athoms

WRInaute discret
Bonjour à tous.

Juste un petit message pour les utilisateurs de categorizator.
J'ai remarqué qu'il y avait pas mal de spams sur les commentaires de ce script en regardant ma base de données (la table des commentaires).

Au début j'ai commencé a coup de delete des commentaires ayant un http. mais seulement voila, il semblerait que certains spammeurs programment des bots à spams (excusez moi de l'expression) et vous vous retrouvez vite avec des milliers de commentaires remplis de liens.

J'ai même modifié les commentaires pour supprimer tout le html, mais ils n'arrêtent pas (ils essaient même de remplacer le a href par des tags de forum! :-/

Donc voici une petite solution. J'ai juste repris le très bon travail fait par superpj (audiencestv, merci à lui) sur categorizator pour la proposition de site. donc ça ne marchera que sur cette version.

Voila les modifications à apporter au fichier commentaires.php.

à insérer au début du script
après le <?php
if ( isset($_GET['image']) || $_POST['action'] == "add" ) {
session_start();
};
if ( isset($_GET['image']) )
{
// Voici les caractères autorisés pour le code
// (j'ai fait exprès de retirer le chiffre 0 et la lettre O pour parer à toute ambiguïté)
$alphanum = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
// Trouve au hasard un code de 5 caractères
$rand = substr(str_shuffle($alphanum), 0, 5);
// Création d'un hash pour ce code puis injection dans la session
$_SESSION['image_random_value'] = md5($rand);
// Sélectionne au hasard l'image de fond : img/bg1.jpg ou img/bg2.jpg
$image = imagecreatefromjpeg("img/bg".rand(1,2).".jpg");
// Blanc en couleur de fond
$bgColor = imagecolorallocate ($image, 255, 255, 255);
// Noir en couleur de texte
$textColor = imagecolorallocate ($image, 0, 0, 0);
// Ecriture du code dans par-dessus l'image
imagestring ($image, 5, 5, 2, $rand, $textColor);
// Paramètres pour éviter la mise en cache ...
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
// Définition du type "image"
header('Content-type: image/jpeg');
// Envoi de l'image au navigateur
imagejpeg($image);
// Destruction de l'image pour libérer la mémoire
imagedestroy($image);
exit;
};

Puis après le ($action == "add")

if ($PMA_infos['code_verif']) faux_code($code,"Erreur :Le code de vérification que vous avez entré est incorrect !",true);

Puis intégrer quelque part dans le formulaire (J'ai laissé le tableau par faineantise, a vous de modifier la mise en page)

<? if ($PMA_infos['code_verif']) {?>
<table>
<tr>
<td colspan=2 class="text_before_field_add_annuaire">
<table border=0 cellpadding=0 cellspacing=0 width=1>
<tr>
<td align=center valign=bottom class="text_before_field_add_annuaire" nowrap>
<table border=0 cellpadding=2 cellspacing=0 width=100%>
<tr>
<td align=center valign=bottom class="text_before_field_add_annuaire" nowrap>
Veuillez recopier le code de vérification ci-contre :&nbsp; </td>
</tr>
</table> </td>
<td align=center valign=bottom class="text_before_field_add_annuaire">
<img src=submit_site.php?image border=1 width=60 height=18> </td>
<td align=center valign=bottom class="text_before_field_add_annuaire">
&nbsp;<input type="text" name="code" maxlength=5 size=5> </td>
</tr>
</table> </td>
</tr></table>
<? }; ?>

Voila qui devrait regler le problème

Vous pouvez voir le résultat sur le site de mon profil.

Je vous conseille également de faire un script pour virer le html également.

Bonne journée à tous. :)
 

bgdc

WRInaute impliqué
j'ai été voir par curiosité, et je ne vois pas l'image. Il y a juste la zone ou l'on demande de saisir le code.

Je suis sous FF.
 

athoms

WRInaute discret
Bonjour,

Je viens de me rendre compte que j'avais un petit problème avec mon site. J'avais rajouté des doctype au début et le problème était bien présent sur les commentaires et la soumission de sites. là c'est réparé, j'ai testé sur Firefox et IE (pas opéra sur mon pc). Pour voir le résultat il faut aller par exemple sur un site et cliquer sur rediger un commentaire. avant le commentaire, il y a le message "Veuillez recopier le code de vérification ci-contre".

Par contre je suis d'accord avec AdRi1, les bots savent lire maintenant les captchas :-( mais ça reste à mon avis une protection de niveau moyen facile à mettre en place. Moi je l'ai cumulé, avec le retrait du code html et la pose d'un cookie pour limiter à un commentaire par site et par personne par session.

Maintenant plus de problème :).

Sinon une autre solution facile également à mettre en place (et utile pour les annuaires actifs). Faire une requete sql du genre "delete from commentaires_sites_annu where commentaire like '%http%' " à chaque fois que vous vous logguez en tant qu'admin ;-)

Le tout cumulé avec les autres méthodes décrites ci-dessus permettront d'éradiquer je pense définitivement les spams :)
 

Discussions similaires

Haut