====== Bannissement par liste noire ======
Internet n'est plus le lieu qu'il a été. Toute bonne chose est corrompue, et il en va de même pour les wikis. Le [[meatball>WikiSpam]], comme le [[wpfr>spam]] dans les blogs et courriels est en augmentation. Si vous utilisez [[doku>fr:dokuwiki|DokuWiki]] sur votre intranet, alors il n'y a aucun problème. Mais si vous voulez l'utiliser sur l'internet ouvert, vous pourriez vouloir bannir certains mots de spam connus.
Ce mécanisme empêche l'enregistrement de pages contenant un mot placé en liste noire.
Pour utiliser une liste noire dans DokuWiki :
* Activez l'option [[fr:config:usewordblock]]
* éditez ensuite le fichier ''conf/wordblock.local.conf''. Vous pouvez voir la liste des termes bannis par défaut dans le fichier ''conf/wordblock.conf''.
Le fichier contient des [[wpfr>Expression_rationnelle|expressions régulières]] (compatible perl ou PCRE). Si l'une d'elles correspond, l'enregistrement d'une page est refusé. Pour comprendre la raison de l'inscription d'un certain texte dans la liste noire, vous pouvez utiliser l'extension [[plugin:whyspam]] pour analyser le texte.
On peut mettre en place un bannissement basé sur des adresses IP soit en utilisant l'extension [[plugin:ipban]], soit en agissant sur le serveur web. Par exemple avec la directive [[http://httpd.apache.org/docs/2.2/howto/access.html#host|deny from]] d'apache 2.2 ou la directive [[http://httpd.apache.org/docs/2.4/howto/access.html#host|Require not ip]] d'Apache 2.4.
===== Sources de listes noires =====
Il est recommandé de mettre à jour la liste noire par une tâche planifiée quotidienne à partir d'une source externe de confiance. Ci après, quelques sources externes.
==== Wikipedia ====
Les gentilles personnes de Wikipedia maintiennent une [[https://meta.wikimedia.org/wiki/Spam_blacklist|telle liste]]. Vous pouvez utiliser cette commande pour mettre à jour votre liste noire à partir de cette source :
$> curl -sk https://meta.wikimedia.org/wiki/Spam_blacklist?action=raw | egrep -v '' > conf/wordblock.local.conf
N'oubliez de créer le fichier conf/wordblock.local.conf.
===== Journaux des attaques bloquées =====
Il est possible d'obtenir un journal des attaques bloquées dans le fichier''/data/meta/wordblock.log'' en modifiant le fichier [[xref>inc/common.php]], utile également pour résoudre le débogage de listes de blocage
Rechercher la section :
function checkwordblock($text=''){
[...]
if(count($re) && preg_match('#('.join('|',$re).')#si',$text,$matches)) {
// prepare event data
$data['matches'] = $matches;
$data['userinfo']['ip'] = $_SERVER['REMOTE_ADDR'];
[...]
Changez la par:
function checkwordblock($text=''){
[...]
if(count($re) && preg_match('#('.join('|',$re).')#si',$text,$matches)) {
// prepare event data
io_saveFile($conf['metadir'].'/wordblock.log', strftime($conf['dformat'])."\t".$matches[0]."\t".$ID.$_SERVER['REMOTE_USER']."\t".$_SERVER['REMOTE_ADDR'].":".$_SERVER['SERVER_PORT']."\t".gethostbyaddr($_SERVER['REMOTE_ADDR'])."\t".$_SERVER['HTTP_USER_AGENT']."\n", true);
$data['matches'] = $matches;
$data['userinfo']['ip'] = $_SERVER['REMOTE_ADDR'];
[...]
=====Voir aussi =====
* [[fr:config|Configuration de DokuWiki]]