⋮ Obsah
Zařazení na černou listinu
https://www.dokuwiki.org/blacklist
Je potřeba zkontrolovat!
Internet už není tím, čím býval. Všechno dobré se časem zneužije - a wiki není výjimkou. WikiSpam, podobně jako spam v blozích nebo e-mailech, je na vzestupu. Pokud používáte DokuWiki v rámci intranetu, nemusíte se tím trápit. Ale pokud ji provozujete veřejně na internetu, možná budete chtít zablokovat některé známé spamové výrazy.
Pro použití blacklistu v DokuWiki:
- povolte volbu config:usewordblock v konfiguračním správci (ve výchozím stavu zapnuto);
Soubor obsahuje Regulární výrazy (kompatibilní s Perl syntaxí). Pokud se některý výraz shoduje, uložení stránky je zakázáno. Pro zjištění, proč byl určitý text označen jako spam, použijte plugin plugin:whyspam.
Blokování podle IP adresy lze provést pomocí direktiv Apache deny from nebo pomocí pluginu plugin:ipban.
Přidávání/odebírání blokovaných výrazů
Vlastní výrazy můžete přidat vytvořením souboru conf/wordblock.local.conf a vložením výrazů:
(long|loud) shouting
Výchozí blokované výrazy lze deaktivovat prefixem !:
!woww gold
Zdroje pro blacklist
Doporučuje se aktualizovat blacklist z veřejného zdroje pomocí denního cronjobu. Zde je jeden z dostupných zdrojů:
Wikipedie
Wikipedie udržuje podobný blacklist. Pro aktualizaci můžete použít následující příkaz:
$> curl -sk https://meta.wikimedia.org/wiki/Spam_blacklist?action=raw | egrep -v '<?pre>' > conf/wordblock.local.conf
Nezapomeňte vytvořit soubor conf/wordblock.local.conf.
Logování zablokovaných útoků
Malá úprava v souboru inc/common.php umožní logovat zablokované pokusy do /data/meta/wordblock.log a může se hodit i pro ladění blacklistu.
Vyhledejte řádek:
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']; [...]
Změňte na:
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']; [...]