|
SpamBlacklist是一个对编辑内容进行简单过滤的mediawiki扩展。当有人试图保存页面时,本扩展将检查是否含有spam黑名单页面中的限制信息,如有出现则进行错误提示并拒绝保存页面。
安装
请按下述方法为mediawiki增加本功能
首先,下载SpamBlacklist目录并上传到你的Mediawiki系统extensions目录下。在SpamBlacklist目录下至少包括两个文件:
* SpamBlacklist.php
* SpamBlacklist_body.php
然后,在LocalSettings.php的后部增加下面一行:
- 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>所指定名称的页面。
示例:
- require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" );
- $wgSpamBlacklistFiles = array(
- "$IP/extensions/SpamBlacklist/wikimedia_blacklist", // Wikimedia's list
- // database title
- "DB: wikidb My_spam_blacklist",
- );
复制代码 在上面的例子中,网址黑名单将有两个来源。一、网站SpamBlacklist目录下一个名为wikimedia_blacklist的服务器文件被调用; 二、名为My_spam_blacklist的wiki页面被调用。
这看起来很明显,但如果你希望在本地调用外部数据,应该做如下替换:
- "$IP/extensions/SpamBlacklist/wikimedia_blacklist", // Wikimedia's list
复制代码 换成类似于:
- "http://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1" // Wikimedia's list
复制代码 文件格式
简而言之:
* "#"之后至行尾的所有内容被当作注释,不起作用
* 所有非空行都是一个正则表达式的片段,这仅对wiki文本的URL部分进行匹配。
正则表达式的形式如下:
- !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的手段)
|
|