Fondamentalement, mon instance mediawiki «privée» était à peu près aussi sécurisée qu'une tirelire pour tout-petits. Je l'ai resserré maintenant, mais il me reste environ une centaine de nouvelles pages et révisions générées par des centaines d'utilisateurs générés aléatoirement.
Question en 2 parties; Existe-t-il un moyen de supprimer toutes les pages orphelines? Puis-je demander d'annuler toutes les révisions NON effectuées par un utilisateur particulier (moi)?
Réponses:
Si vous ne souhaitez pas utiliser la méthode d'exportation et de réinstallation suggérée par danlefree , vous pouvez également trouver l' extension Nuke utile. Une fois installé, visitez la page spéciale Special: Nuke en tant qu'administrateur vous donne un formulaire comme celui-ci:
Il existe également plusieurs scripts de maintenance MediaWiki intégrés qui pourraient être utiles, notamment:
cleanupSpam.php , qui peut être utilisé pour restaurer et / ou supprimer toutes les révisions contenant un lien vers un nom d'hôte particulier,
deleteBatch.php , qui peut être utilisé pour supprimer toutes les pages répertoriées dans un fichier, et
rollbackEdits.php (qui ne semble pas actuellement avoir une documentation appropriée sur le wiki), qui peut être utilisé pour annuler toutes les modifications d'un utilisateur spécifié.
Nettoyage du spam à l'aide d'un accès direct à la base de données
Il est également possible de faire ce que vous voulez en manipulant directement la base de données. Les détails peuvent varier un peu en fonction de votre situation, mais les étapes de base se présenteraient comme suit:
Réglez votre wiki en mode lecture seule . Vous ne voulez pas que quelqu'un essaie de modifier le wiki pendant que vous jouez avec la base de données.
Faites une sauvegarde de votre wiki. (Ceci est fortement recommandé avant toute suppression de masse irréversible de toute façon.)
Supprimez tous les comptes d'utilisateurs créés par les spammeurs. Si, comme dans la question ci-dessus, vous étiez le seul utilisateur valide, vous pouvez simplement faire:
Alternativement, si aucun nouveau compte valide n'a été créé après que les spammeurs ont découvert le wiki, vous pouvez trouver le numéro d'ID utilisateur valide le plus élevé et faire:
Ou vous pouvez utiliser un outil d'administration comme phpMyAdmin pour sélectionner manuellement les comptes valides et supprimer les autres.
Nettoyez les données supplémentaires associées aux comptes supprimés. Ce n'est pas strictement nécessaire, mais ces enregistrements orphelins n'ont aucune utilité et ne feront qu'encombrer votre base de données si vous ne les supprimez pas:
Supprimez toutes les révisions non effectuées par un utilisateur valide:
C'est le grand pas; tout avant la préparation, tout après le nettoyage. Avec tous les comptes de spam supprimés, vous pouvez simplement faire:
Si votre wiki avait désactivé l'édition anonyme (ce que je recommande fortement pour les wikis privés / de test), la requête ci-dessus devrait être suffisante pour se débarrasser de toutes les révisions de spam. Si vous aviez activé la modification, vous devrez neutraliser le spam anonyme séparément.
Si vous êtes sûr que toutes les modifications anon sur votre wiki sont du spam, les seules modifications apportées par l'UID 0 que nous pourrions avoir besoin de conserver sont celles effectuées par MediaWiki lui-même (telles que les pages importées de l'extérieur du wiki). Dans ce cas, quelque chose comme la requête suivante devrait fonctionner:
Cela supprimera toutes les révisions de l'UID 0 où le nom d'utilisateur ressemble (vaguement) à une adresse IPv4; c'est-à-dire qu'il commence par un chiffre compris entre 1 et 9.
Si votre wiki contient des modifications anon légitimes, vous devrez peut-être faire preuve d'un peu plus de créativité. Si le nombre d'adresses IP utilisées par des éditeurs légitimes non enregistrés est limité, vous pouvez simplement ajouter une clause similaire
AND rev_user_text NOT IN ('1.2.3.4', '5.6.7.8', '9.10.11.12')
à la requête ci-dessus pour exclure les contributions de ces adresses IP de la suppression. Vous pouvez également ajouter des conditions telles que, par exemple,AND rev_user_text NOT LIKE '192.168.%'
pour enregistrer toutes les modifications des adresses IP commençant par un préfixe particulier.Les requêtes ci-dessus supprimeront les révisions de spam (bien que leur contenu restera toujours dans le
text
tableau), mais laissera lepage_latest
champ de toutes les pages affectées pointant vers une révision inexistante. Cela pourrait provoquer de la confusion, nous ferions donc mieux de le réparer.Tout d'abord, nous devons effacer la
page_latest
colonne pour toutes les pages:Ensuite, nous reconstruirons la colonne, soit en exécutant le script de maintenance attachLatest.php (recommandé; n'oubliez pas d'utiliser le
--fix
paramètre pour que le script change réellement la base de données) ou avec une requête SQL manuelle:Enfin, nous supprimerons toutes les pages pour lesquelles aucune révision valide n'a pu être trouvée (car elles ont été créées par des spammeurs et n'ont jamais eu de contenu valide):
Pour une touche finale, reconstruisez les liens, l'index de texte et les tables de modifications récentes en exécutant le script de maintenance rebuildall.php . Vous pouvez également supprimer le contenu des révisions de spam supprimées de la base de données, afin qu'elles n'y occupent pas d'espace inutile, en exécutant le script de maintenance purgeOldText.php .
Une fois que tout est terminé, vérifiez que tout semble correct et, dans l'affirmative, désactivez le mode lecture seule - espérons-le après avoir installé certaines fonctionnalités anti-spam pour éviter que le problème ne se reproduise.
Pour les petits wikis, je recommande fortement l' extension QuestyCaptcha , qui vous permet de configurer un simple CAPTCHA basé sur du texte personnalisé. L'astuce est que, avec chaque wiki ayant son propre ensemble de questions, programmer un spambot pour y répondre correctement serait beaucoup de travail pour très peu de gain. Je l'ai installé sur mon propre wiki après avoir été touché par XRumer plusieurs fois, et je n'ai plus vu de spam depuis.
Ps. J'ai utilisé ces instructions pour supprimer environ 35 000 révisions de spam créées par autant d'utilisateurs à partir d' un petit wiki . Tout s'est bien passé. Dans ce cas particulier, le wiki (heureusement!) Ne permettait pas la modification anonyme, et presque tous les utilisateurs légitimes ont été créés avant que les spammeurs ne trouvent le wiki, donc je pouvais assez facilement d'abord supprimer tous les comptes de spam, puis toutes les révisions ils avaient créé. (J'ai d'abord accidentellement supprimé un compte légitime, j'ai donc dû restaurer à partir de la sauvegarde et refaire le processus plus soigneusement.) J'ai mis à jour les instructions ci-dessus pour mieux refléter ce que j'ai fini par faire et pour être un peu plus générique .
la source
rebuildall.php
n'est pas en maintenance: O Sinon merciLe moyen le plus simple de gérer cette situation (si cela ne vous dérange pas) est d'exporter toutes les pages wiki créées ou modifiées par votre nom d'utilisateur, de réinstaller le wiki et d'importer le fichier d'exportation que vous avez généré.
"Réinstaller" dans ce contexte signifierait:
LocalSettings.php
fichier dans un endroit sûr/config/
répertoire/config/
répertoire et déplacez votre ancienLocalSettings.php
fichier vers la racine MWModifier: vous souhaiterez peut-être supprimer une sauvegarde de la base de données (y compris les révisions de spam) au cas où vous rencontriez des problèmes avec ce processus ou souhaitiez expérimenter d'autres moyens de purger le spam.
la source
En théorie, vous pourriez écrire une extension MediaWiki pour faire ce que vous voulez dans une instance MediaWiki, y compris pour faire les choses que vous avez mentionnées.
En dehors de cela et du "nuke'n'pave" suggéré par danlefree, vous pouvez trouver l' extension User Merge and Delete utile: vous pouvez l'utiliser pour consolider plusieurs comptes de spambot en un seul compte dont les modifications peuvent ensuite être traitées plus facilement.
la source
La façon la plus simple de gérer cette situation consiste à installer l'extension DeleteBatch . Utilisez Special: AllPages sur votre wiki pour obtenir un fichier de script des noms de page que vous souhaitez supprimer et chargez-le dans Special: DeleteBatch.
la source
Si ce n'est qu'une centaine de pages de spam, vous ne faites pas trop mal. J'ai dû nettoyer un wiki qui avait des milliers de pages spammées. J'ai trouvé quelques bons conseils par l'utilisateur: Halz sur cette page: https://www.mediawiki.org/wiki/User:Halz/Mass_despamming, y compris une ventilation des limitations des différents outils.
En bas, il a fourni une requête SQL utile qui s'exécute un peu lentement mais vous aide à trouver les pages qui sont le plus probablement du spam, en particulier si vous pouvez identifier la période de temps où le wiki a été pris en charge par les spammeurs. Halz a également une version piratée d'Extension: Nuke qui présente ces types de paramètres interrogeables pour une suppression de masse facile. Il m'en a donné un exemplaire à utiliser, mais je ne pense pas qu'il l'ait publié.
la source
Je recommande fortement de ne pas jouer avec le SQL de MediaWiki! MediaWiki est une bête complexe, très optimisée pour Wikipedia. Il y a des choses étranges qui se passent dans SQL et si vous SUPPRIMEZ simplement les lignes, les choses pourraient perdre leur cohérence.
Si vous avez des compétences en programmation, passez par l'API. Pywikibot est un bon choix.
Sinon, vérifiez les outils dans le
maintenance/
répertoire. Vous pouvez essayer mon propre outil, mewsh pour vous y aider (et je viens d'ajouter des "outils anti-spam" comme tâche).la source
J'ai repris une installation et trouvé plus de 47 000 entrées de spam dans le
user
tableau et près de 900 000 spamexternallinks
. J'ai utilisé Sequel Pro et visité chaque table et supprimé les entrées non effectuées par des utilisateurs authentiques. J'ai trouvé le spam dansexternallinks
,page
,searchindex
,user
,watchlist
. C'était assez rapide; la majeure partie de mon temps attendait l'exécution des requêtes de suppression. J'ai eu de la chance car la plupart des modifications authentiques se sont produites tôt dans l'ordre des choses.la source
externallinks
ne sert à rien d' essayer de supprimer les liens de spam , car il s'agit d'une table de métadonnées redondante qui est essentiellement utilisée uniquement pour des choses comme Special: LinkSearch; une fois que vous avez nettoyé les pages réelles, vous pouvez simplement exécuterrebuildall.php
pour les nettoyer et les reconstruire. Idem poursearchindex
.