Tuto phpBB : script de suppression de spam

Une moulinette de code qui s'est enrayée, une requête SQL qui ne passe pas ?
Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2180
Inscription: 06 Sep 2008, 22:05

Tuto phpBB : script de suppression de spam

Messagede Galdon » 04 Mai 2011, 18:39

Voici un petit tutoriel qui intéressera ceux qui administrent un forum sous phpBB 3.

Il arrive régulièrement que des failles soient découvertes dans le système d'inscription de phpBB.

Ces failles sont alors exploitées par des programmes spammeurs (comme Xrumer), qui en profitent pour créer des comptes et poster du spam (en russe ou en anglais) dans des quantités très importantes (genre 1000 topics/jour).

Ça a par exemple été le cas fin 2009 et début 2011 (le 4 janvier pour être plus précis) : une mise à jour de Xrumer lui a permis de décoder les captcha Recaptcha (un service de Google), et donc de s'inscrire sans aucun problème, et de commettre ses méfaits dans la foulée.


Du coup, on se retrouve avec un forum pourri de spam, obligé de fermer les inscriptions pour arrêter l'inondation, le temps de corriger le problème et de supprimer toute cette merde.

Seulement voilà, supprimer les posts/topics/utilisateurs un par un c'est long et terriblement chiant.

Alors j'ai mis au point pour l'occasion un petit script PHP qui supprime automatiquement le spam, juste en appuyant sur un bouton !


Le fonctionnement est assez simple :
D'un côté, j'ai créé un forum spécifique nommé "spam", fermé au public.

Le but du jeu va être de déplacer tous les topics de spam dans ce forum "spam".
Il est alors très facile d'identifier les spammeurs : un spammeur est un utilisateur qui est l'auteur d'au moins un topic dans le forum spam !


Et c'est justement le rôle de ce script : supprimer tous les utilisateurs du forum spam.

J'ai aussi ajouté une sécurité, un test qui vérifie avant de supprimer sauvagement l'utilisateur (et tous ses posts, pièces jointes, topics…) si tous les posts de cet utilisateur se trouvent dans le forum spam.
Si tel n'était pas le cas, on ne supprime pas l'utilisateur, on passe au suivant.

Vous pouvez télécharger le script ici :
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol

sitesaj
 
Messages: 1
Inscription: 22 Nov 2011, 21:58

Re: Tuto phpBB : script de suppression de spam

Messagede sitesaj » 25 Nov 2011, 16:30

Bonjour,

Victime de spams sur mon forum phpbb version 3.05 j'aimerai avoir des explications plus détaillées concernant l'utilisation de ce script ayant eu un avertissement avec suppression d'une de mes bases de données sql par free... comme premier avertissement.

Si vous pouviez détailler pas à par la marche à suivre pour déplacer les topics vers le forum spams crée à cet effet et même les autres étapes cela m'aiderai.

Merci d'avance.

Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2180
Inscription: 06 Sep 2008, 22:05

Re: Tuto phpBB : script de suppression de spam

Messagede Galdon » 26 Nov 2011, 21:39

C'est vrai que dans le script que j'ai uploadé dans mon premier post il n'y a que la suppression des users/topics/posts/attachments qui est prise en charge, pas le déplacement vers le forum spam.

En fait j'avais également utilisé un autre script fait maison pour déplacer les topics de spam vers le forum spam, mais je ne l'ai pas partagé ici car il est vraiment spécifique à mon forum.

Sur le forum finalclap, j'ai ajouté une petite "surcouche" à phpbb qui me permet de connaître le pays d'origine de chaque utilisateur en utilisant son IP (géolocalisation IP).

Je stocke ces informations dans une table que j'ai créé dans la base de données, une table qui s'appelle fc_geo_users.

Donc pour déplacer les topics de spam, je m'étais basé sur le pays de leur auteur, j'avais facilement identifié les principaux pays d'origine du spam en jettant un rapide coup d'oeil dans la base de données, avec cette requête SQL :

Code: Tout sélectionner
SELECT fc_geo_users.pays, phpbb_posts.*
FROM phpbb_posts
LEFT JOIN fc_geo_users ON fc_geo_users.id_user = phpbb_posts.poster_id
WHERE forum_id < 33
AND fc_geo_users.pays NOT IN( 'FRANCE','ALGERIA','BELGIUM','CANADA','MOROCCO' )
ORDER BY fc_geo_users.pays


Elle remonte une liste de posts (messages) qui ne viennent pas des pays qui fréquentent habituellement le site (des pays francophones que j'ai trouvé dans les statistiques de fréquentation google analytics : France, Canada...).

Du coup je voyais presque uniquement le spam qui dans les résultats de cette requête, alors j'ai pris les plus gros pays spammers qui étaient la Russie, les Seychelles et l'Ukraine, et ensuite j'ai créé un script qui déplace tous les topics dont l'auteur vient de ces pays. Après ce bon coup de karsher j'ai terminé le peu qui restait à la main (froidement et tout ^^).

Au final, voici le script qui me servait à déplacer les topics :

Code: Tout sélectionner
# Configuration
$_SPAM_FORUM_ID = 50

# Sélection des id topics posté par des users geolocalisés dans les pays de spam
$result = $db->sql_query("
   SELECT topic_id
   FROM phpbb_topics
   WHERE phpbb_topics.topic_poster IN(
      SELECT user_id
      FROM phpbb_users
      WHERE user_id IN(
         SELECT id_user
         FROM fc_geo_users
         WHERE pays IN( 'RUSSIAN FEDERATION', 'SEYCHELLES', 'UKRAINE' )
      )
   )
   AND forum_id NOT IN ($_SPAM_FORUM_ID)
");

$spam_topic_ids = array();
while( $row = $db->sql_fetchrow($result) ){
   $spam_topic_ids[] = $row['topic_id'];
}

move_topics( $spam_topic_ids , $_SPAM_FORUM_ID );


Voilà, j'espère que ça pourra t'aider, mais en gros c'est ça la marche à suivre :
  • trouver des particularités propres au spam
  • écrire une ou plusieurs requêtes SQL qui remontent des topics de spam en ce basant sur ces critères
  • déplacer ces topics dans le forum de spam
  • appeler mon script de suppression qui va faire le ménage en se basant sur le contenu du forum de spam
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol

lima2010
 
Messages: 2
Inscription: 09 Fév 2012, 16:22

Re: Tuto phpBB : script de suppression de spam

Messagede lima2010 » 09 Fév 2012, 16:37

Bonjour ,

on appel ca le racisme , pourquoi , les arabes n'ont pas le droit de participer a ce forum :( :( :?:

je suis webmaster marocaine et je cherche toujours l'aide sur des forums francais

Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2180
Inscription: 06 Sep 2008, 22:05

Re: Tuto phpBB : script de suppression de spam

Messagede Galdon » 10 Fév 2012, 15:21

@lima2010 : du racisme ?

J'ai relu le topic et je vois pas le rapport, pourquoi tu sort ça comme ça, il est où le problème ?
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol

Avatar de l’utilisateur
yassingraph
 
Messages: 9
Inscription: 03 Jan 2013, 12:05

Re: Tuto phpBB : script de suppression de spam

Messagede yassingraph » 04 Jan 2013, 14:25

merci bcp pour le tuto!


Retourner vers PHP/MySQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité