美国主机Lunarpages

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4295|回复: 0

MediaWiki扩展:spam黑名单之文档

[复制链接]
发表于 2010-12-25 16:18:40 | 显示全部楼层 |阅读模式
HostEase主机优惠
SpamBlacklist是一个对编辑内容进行简单过滤的mediawiki扩展。当有人试图保存页面时,本扩展将检查是否含有spam黑名单页面中的限制信息,如有出现则进行错误提示并拒绝保存页面。

安装

请按下述方法为mediawiki增加本功能

首先,下载SpamBlacklist目录并上传到你的Mediawiki系统extensions目录下。在SpamBlacklist目录下至少包括两个文件:

        * SpamBlacklist.php
        * SpamBlacklist_body.php

然后,在LocalSettings.php的后部增加下面一行:

  1. require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" );
复制代码
无需其他操作,过滤器即可工作。在默认情况下,元维基的Blacklist(spam黑名单)将被下载并作为内容检查的依据。

另外可以选择从多个网址获取黑名单信息。这些来源由$wgSpamBlacklistFiles全局变量来设置,可以写在LocalSettings.php文件里的including SpamBlacklist.php行之后。

注意,一旦在LocalSettings.php指定了$wpSpamBlacklistFiles数组的内容,将不再执行默认获取元维基网址黑名单的动作。

$wgSpamBlacklistFiles是一个数组,每个取值为URL、文件名或者数据库location之一。

指定数据库location允许你从贵站wiki页面中获得黑名单信息。其指定格式为:"DB: <db name> <title>"。其中,<db name>要与LocalSettings.php中的$wgDBname变量值完全一致。还有,你需要在wiki中建立<title>所指定名称的页面。

示例:
  1. require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" );
  2. $wgSpamBlacklistFiles = array(
  3. "$IP/extensions/SpamBlacklist/wikimedia_blacklist", // Wikimedia's list

  4. // database    title
  5. "DB: wikidb My_spam_blacklist",   
  6. );
复制代码
在上面的例子中,网址黑名单将有两个来源。一、网站SpamBlacklist目录下一个名为wikimedia_blacklist的服务器文件被调用; 二、名为My_spam_blacklist的wiki页面被调用。

这看起来很明显,但如果你希望在本地调用外部数据,应该做如下替换:

  1. "$IP/extensions/SpamBlacklist/wikimedia_blacklist", // Wikimedia's list
复制代码
换成类似于:

  1. "http://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1" // Wikimedia's list
复制代码
文件格式

简而言之:

    * "#"之后至行尾的所有内容被当作注释,不起作用
    * 所有非空行都是一个正则表达式的片段,这仅对wiki文本的URL部分进行匹配。

正则表达式的形式如下:

  1. !http://[a-z0-9\-.]*(line 1|line 2|line 3|....)!Si
复制代码
关于正则表达式的部分说明:

    * 不需要在网址名称之前增加写上www,扩展能够匹配所有的子域名字串
    * 注意不要让匹配模式字串跑飞,例如包含".*"的字串
    * 与类似系统不同,行尾的模式匹配符"$"不是指网址的结尾,而是指文章的结尾。
性能
这个扩展使用了一个小的"loader"文件,以避免每次页面浏览时加载所有代码。这意味着页面浏览性能不收任何影响,即便没有运行Turck MMCache之类的缓冲也没关系(当然,mediawiki系统强烈建议使用缓冲机制以提高效率)。

至于正则表达式的匹配,则会在页面保存时增加些微开销,经验数值为增加100ms。但是,从磁盘/数据库加载spam文件,构建正则表达式,会有比较显著的开销,这根硬件环境也有关。如果打开这个扩展后显著降低了保存性能,请尝试安装MemCached或其他数据缓存措施,这样 SpamBlacklist扩展将会还春构建好的正则表达式。

稳定性
本扩展并未在Wikimedia之外广泛测试。尽管它从2004年12月就开始在Wikimedia网站上运作,但仍应该被视为试验版本。本设计极为简单,只有很少的输入规范性验证,因此,错误的正则表达式或非标准设置可能导致不可预料的运行结果。

获取或制作黑名单

主要的来源可以参见元维基的这个页面:

http://meta.wikimedia.org/wiki/Spam_blacklist

在默认配置下,本扩展将每10-15分钟重新调用一次黑名单数据。

Wikimedia的spam blacklist仅允许由可信赖的管理员进行编辑。

Wikimedia有着大量的各色wiki,包含无数的外部链接。因此Wikimedia的blacklist相对显得很保守。如果你期望增加更多的阻挡关键字甚至ccTLD阻挡,可以到下面提交修改建议:

http://meta.wikimedia.org/wiki/Talk:Spam_blacklist

在本地维护网址黑名单列表要简单些,你可以通过$wgSpamBlacklistFiles变量(见上文)进行指定,并在自己的站点上建立黑名单。这样做的同时,强烈建议保护该页面,以避免随意修改破坏。(这种潜在危险包括:有人输入一个匹配所有字串的表达式;正则表达式片段还可能为攻击者提供创建segfaults in the PCRE library的手段)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

美国主机评测网站

Archiver|手机版|小黑屋|Mediawiki中文技术论坛

GMT+8, 2022-7-6 21:43 , Processed in 0.126194 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2022, Tencent Cloud.

快速回复 返回顶部 返回列表