Il est probable que peu de temps après l'installation de votre wiki et sa mise en ligne, il soit l'objet de vandalismes et surtout de spam (introduction de liens vers des sites commerciaux ou au contenu choquant). Il existe plusieurs solutions pour se prémunir de ces activités malveillantes.
Gérer les droits.
Interdire l'édition aux utilisateurs non enregistrés.
La première solution, très efficace, consiste à interdire l'édition aux utilisateurs non enregistrés. Dans le fichier LocalSettings.php, ajoutez la ligne :
 $wgGroupPermissions['*']['edit'] = false;
Cette solution éradique évidemment le problème des IP malveillantes, mais celui des comptes créés pour nuire demeure. Pour un site à faible trafic, qui a peu de chances d'être une cible d'attaques élaborées, cette solution est donc satisfaisante, mais pas à 100 pour cent du fait de l'existence de robots capables d'opérer en tant que compte enregistré. Il est difficile d'évaluer la réalité de ce risque pour un site modeste ; il faut savoir que l'utilisation d'un robot est à la portée de tous. Mais l'auteur de cette page ne peut parler que de son expérience, et après plusieurs années comme administrateur de petits sites, je n'ai jamais subi ce genre d'attaques, seulement les désagréments des IP introduisant des liens.
Exiger une confirmation d'email après la création d'un compte.
Pour élever la sécurité de votre wiki par la gestion des droits, vous pouvez fermer encore un peu plus l'accès à l'édition, par exemple en exigeant une confirmation d'email après la création d'un compte. Il faut dans ce cas ajouter dans le fichier LocalSettings.php :
 $wgEmailConfirmToEdit = true;
Nommer un « "patroller" » ou patrouilleur.
À venir
Autres aspects.
Il est en outre possible de définir des groupes ; un utilisateur qui s'enregistre peut par exemple ne pas encore avoir le droit d'éditer toutes les pages de votre wiki. Ou bien, selon les spécificités de votre Wiki, vous pouvez définir quels contributeurs a le droit d'éditer quelles pages, et ainsi de suite, les possibilités sont infinies. Pour ce type de configurations (qui dépasse le propos de cette page), vous pouvez consulter le site MediaWiki ou laisser un message ici en page de discussion.
Extensions pour prévenir le vandalisme et le spam.
Néanmoins, l'idée d'un wiki est de permettre à tous de modifier les pages, aussi pouvez-vous refuser de recourir à ce genre de restrictions. Il existe de nombreuses extensions qui permettent d'éviter d'en arriver à cette dernière extrémité malgré la malveillance des vandales et des spammeurs. Toutes ces extensions s'installent selon la méthode usuelle expliquée précédemment, mais il faut dans certains cas faire un peu de configuration.
ConfirmEdit.
Cette extension est très utile, car elle empêche les utilisateurs non-enregistrés de publier directement des liens, ceci par l'utilisation d'un captcha basique. Voir
. Configurée par défaut pour afficher le captcha quand un utilisateur non-enregistré tente d'introduire un lien.
Force Preview.
Cette extension oblige les utilisateurs non-enregistrés à prévisualiser avant de sauvegarder. C'est une sorte de garde-fou qui a un effet dissuasif. Pas de configuration nécessaire. Voir .
SpamBlacklist.
Cette extension bloque l'édition d'une page quand un utilisateur tente de publier un lien interdit. Tous les liens interdits sont sur une liste noire. Vous pouvez faire votre propre liste, utiliser celle de wikimedia, ou les deux en même temps. L'extension doit être configurée. Voir .
Pour utiliser la liste noire de wikimedia et pouvoir créer votre propre liste, ajoutez dans le fichier LocalSettings.php :
 require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" );
 $wgSpamBlacklistFiles = array(
 "http://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1", // Wikimedia's list
 // database title
 "DB: wikidb MediaWiki:Spam-blacklist", 
L'intérêt de l'utilisation de la liste noire de wikimedia est qu'elle contient des liens de sites qui ont été reconnus indésirables et qui sont susceptibles de vous spammer.
D'un autre côté, ce sont des sites qui peuvent avoir tenté de spammer un site comme Wikipédia, c'est-à-dire un site à fort trafic, ce qui peut limiter l'intérêt de cette liste pour votre site s'il est de taille modeste. De plus, certains liens interdits ne sont pas forcement des liens de sites commerciaux, mais de sites interdits pour des raisons propres aux différents sites de WikiMedia. Vous pourriez donc avoir besoin d'autoriser ces liens ; pour ce faire, il faut se rendre sur la page et ajouter le lien.
Title Blacklist.
Cette extension interdit la création de page avec des titres sans aucun sens (type : ééééé) ou injurieux. Vous pouvez définir votre propre liste noire, ou utiliser celle de Wikimedia, ou les deux. Voir : .
Bloquer les robots spammeurs.
Le site http://www.stopforumspam.com propose une liste de plusieurs dizaines de milliers d'adresses de robots spammeurs que vous pouvez télécharger et utiliser pour leur bloquer l'accès à votre site.
Sous Linux, vous pouvez créer automatiquement un fichier bannedips.php, fichier que vous pourrez mettre à jour régulièrement, grâce à ce script :
wget "http://www.stopforumspam.com/downloads/bannedips.zip" -O bannedips.zip
unzip bannedips.zip
echo "<?php" > bannedips.php;
echo \$"wgProxyList = array(" » bannedips.php; echo -n "'" » bannedips.php;
cat bannedips.csv | awk 'gsub (",","\x27,\n\x27")' » bannedips.php;
echo "');" » bannedips.php;
rm bannedips.csv;
rm bannedips.zip;
Copiez ce script dans un traitement de texte et sauvegardez-le sous le nom updateBannedIPs.sh. Il doit être ensuite rendu exécutable (clic droit > propriétés > permissions > exécution). Dans un terminal, placez-vous dans le dossier où se trouve le script, et tapez :
 sh updateBannedIPs.sh
Le résultat apparaît dans le même dossier, sous la forme d'un fichier nommé bannedips.php. Copiez bannedips.php dans le dossier /extensions de votre wiki, puis ajoutez dans le fichier LocalSettings.php, la ligne :
require_once("$IP/extensions/bannedips.php");
Fonction $wgSpamRegex.
Cette fonction utilise des expressions régulières et se configure dans le fichier LocalSettings.php. Les expressions régulières sont des suites de caractères qui permettent de définir de manière économique un ensemble d'expressions. Ainsi, au lieu de faire la liste de toutes les pages d'un domaine à bannir, une expression régulière permet de résumer toutes ces pages.
Le site MediaWiki fournit l'exemple suivant qui interdit l'ajout de liens contenant des mots très fréquents dans les spams et qui empêche aussi l'ajout de contenu caché :
 $wgSpamRegex = "/". # The "/" is the opening wrapper
 "s-e-x|zoofilia|sexyongpin|grusskarte|geburtstagskarten|animalsex|".
 "sex-with|dogsex|adultchat|adultlive|camsex|sexcam|livesex|sexchat|".
 "chatsex|onlinesex|adultporn|adultvideo|adultweb.|hardcoresex|hardcoreporn|".
 "teenporn|xxxporn|lesbiansex|livegirl|livenude|livesex|livevideo|camgirl|".
 "spycam|voyeursex|casino-online|online-casino|kontaktlinsen|cheapest-phone|".
 "laser-eye|eye-laser|fuelcellmarket|lasikclinic|cragrats|parishilton|".
 "paris-hilton|paris-tape|2large|fuel-dispenser|fueling-dispenser|huojia|".
 "jinxinghj|telematicsone|telematiksone|a-mortgage|diamondabrasives|".
 "reuterbrook|sex-plugin|sex-zone|lazy-stars|eblja|liuhecai|".
 "buy-viagra|-cialis|-levitra|boy-and-girl-kissing|". # These match spammy words
 "dirare\.com|". # This matches dirare.com a spammer's domain name
 "overflow\s*:\s*auto|". # This matches against overflow:auto (regardless of whitespace on either side of the colon)
 "height\s*:\s*[0-4]px|". # This matches against height:0px (most CSS hidden spam) (regardless of whitespace on either side of the colon)
 "\<\s*a\s*href|". # This blocks all href links entirely, forcing wiki syntax
 "display\s*:\s*none". # This matches against display:none (regardless of whitespace on either side of the colon)
 "/i"; # The "/" ends the regular expression and the "i" switch which follows makes the test case-insensitive
 # The "\s" matches whitespace
 # The "*" is a repeater (zero or more times)
 # The "\s*" means to look for 0 or more amount of whitespace