扩展:滥用过滤器

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:AbuseFilter and the translation is 93% complete.

Other languages:
Deutsch • ‎English • ‎català • ‎dansk • ‎español • ‎français • ‎galego • ‎italiano • ‎polski • ‎português • ‎português do Brasil • ‎sicilianu • ‎suomi • ‎čeština • ‎български • ‎русский • ‎עברית • ‎العربية • ‎سنڌي • ‎فارسی • ‎中文 • ‎日本語 • ‎粵語 • ‎한국어
MediaWiki扩展手册
Crystal Clear action run.svg
AbuseFilter
发布状态: 稳定版
AbuseFilter-Management.png
实现 User activity, Special page, API
描述 允许特定基于行为的限制应用于wiki活动中。
作者
兼容性方针 发行分支
MediaWiki 1.25+
PHP 建议5.4+
数据更新
表格 abuse_filter
abuse_filter_action
abuse_filter_history
abuse_filter_log
许可协议 GNU General Public License 2.0 or later
下载
参数
  • $wgAbuseFilterActions
  • $wgAbuseFilterConditionLimit
  • $wgAbuseFilterEmergencyDisableThreshold
  • $wgAbuseFilterEmergencyDisableCount
  • $wgAbuseFilterEmergencyDisableAge
  • $wgAbuseFilterParserClass
  • $wgAbuseFilterRestrictions
  • $wgAbuseFilterNotifications
  • $wgAbuseFilterNotificationsPrivate
  • $wgAbuseFilterCentralDB
  • $wgAbuseFilterIsCentral
  • $wgAbuseFilterDisallowGlobalLocalBlocks
  • $wgAbuseFilterBlockDuration
  • $wgAbuseFilterAnonBlockDuration
  • $wgAbuseFilterCustomActionsHandler
  • $wgAbuseFilterValidGroups
  • $wgAbuseFilterDefaultWarningMessage
  • $wgAbuseFilterIPMaxAge
  • $wgAbuseFilterProfile
  • $wgAbuseFilterRuntimeProfile
  • $wgAbuseFilterProfileActionsCap
添加的权限
  • abusefilter-view
  • abusefilter-log
  • abusefilter-log-detail
  • abusefilter-revert
  • abusefilter-private
  • abusefilter-private-log
  • abusefilter-view-private
  • abusefilter-log-private
  • abusefilter-hidden-log
  • abusefilter-hide-log
  • abusefilter-modify
  • abusefilter-modify-restricted
  • abusefilter-modify-global
使用的钩子
EditFilterMerged
GetAutoPromoteGroups
AbortMove
MovePageCheckPermissions
ArticleDelete
RecentChange_save
ListDefinedTags
ChangeTagsListActive
LoadExtensionSchemaUpdates
ContributionsToolLinks
UploadVerifyFile
UploadVerifyUpload
UploadStashFile
MakeGlobalVariablesScript
PageContentSaveComplete
UserMergeAccountFields
ParserOutputStashForEdit
翻译AbuseFilter扩展如果在translatewiki.net可用
检查使用和版本矩阵。
问题 开放的工作 · 报告错误

滥用过滤器(AbuseFilter)扩展允许具有权限的用户设置当用户的操作(例如编辑)匹配特定标准时,要进行的特定操作。 例如,可以创建一个过滤器防止匿名用户添加外部链接或封禁移除超过2000个字符的用户。

条件

There are no required dependencies for this extension.

安装

  • 下载文件,并将其放置在您extensions/文件夹中的AbuseFilter目录内。
  • 运行Composer来安装PHP依赖,通过发行composer install至扩展目录。 (参见T173141了解潜在问题。)
  • 将下列代码放置在您的LocalSettings.php的底部:
    wfLoadExtension( 'AbuseFilter' );
    
  • 运行更新脚本,它将自动创建此扩展必须依赖的数据库表。
  • Yes 完成 – 在您的wiki上导航至Special:Version,以验证扩展已成功安装。

致使用MediaWiki 1.26或更早版本的用户:

上面的说明介绍的是安装此扩展的新方法,它使用wfLoadExtension() 如果您需要在早期版本(MediaWiki 1.26和更早版本)中安装此扩展,而不是wfLoadExtension( 'AbuseFilter' );,您需要使用:

require_once "$IP/extensions/AbuseFilter/AbuseFilter.php";


用户权限

一旦您安装了此扩展,您将不得不在LocalSettings.php设置用户权限。

权限 描述
abusefilter-modify 修改防滥用过滤器
abusefilter-view 查看滥用过滤器
abusefilter-log 查看滥用日志
abusefilter-log-detail 查看详细滥用日志
abusefilter-private 查看滥用日志中的私有数据
abusefilter-modify-restricted 修改包含受限动作的防滥用过滤器
abusefilter-modify-global 创建或修改全域滥用过滤器
abusefilter-revert 撤销指定防滥用过滤器作出的所有更改
abusefilter-view-private 查看被标记为私有的防滥用过滤器
abusefilter-log-private 查看标记为私有的过滤器的过滤日志
abusefilter-hide-log 将条目在滥用日志中隐藏
abusefilter-hidden-log 查看隐藏的滥用日志条目
abusefilter-private-log 查看防滥用过滤器私有详情访问日志

举个例子,如果按照以下配置的话,管理员能对滥用过滤器做任何设定,而任何人都能查看过滤日志和已公开的过滤器过滤代码:

$wgGroupPermissions['sysop']['abusefilter-modify'] = true;
$wgGroupPermissions['*']['abusefilter-log-detail'] = true;
$wgGroupPermissions['*']['abusefilter-view'] = true;
$wgGroupPermissions['*']['abusefilter-log'] = true;
$wgGroupPermissions['sysop']['abusefilter-private'] = true;
$wgGroupPermissions['sysop']['abusefilter-modify-restricted'] = true;
$wgGroupPermissions['sysop']['abusefilter-revert'] = true;
如果某过滤器被标记为私用,则拥有abusefilter-modify或abusefilter-view-private权限的用户才能查看该过滤器。

创建和管理过滤器

当安装好本插件,通过滥用管理器管理页Special:AbuseFilter查看过滤日志和创建、修改、测试、删除过滤器。

配置

值名 默认值 描述
$wgAbuseFilterActions array( 'flag' => true, 'throttle' => true, 'warn' => true, 'disallow' => true, 'blockautopromote' => true, 'block' => true, 'rangeblock' => false, 'degroup' => true, 'tag' => true ) 滥用过滤器可以进行的操作。 When adding a new action, check if it is restricted in $wgAbuseFilterRestrictions and, if it is, don't forget to add the abusefilter-modify-restricted right to the appropriate user groups.
$wgAbuseFilterConditionLimit 1000 每次针对更改运行过滤器时可以使用的最大“条件”数。 (更复杂的过滤器需要更多'条件')。
$wgAbuseFilterValidGroups 'default' “组”过滤器列表可以分为。默认情况下,只有一个组。
$wgAbuseFilterEmergencyDisableThreshold array( 'default' => 0.05 ) 如果匹配超过2次编辑,则禁用过滤器,构成在“观察”期间(最多一天)针对过滤器组检查的操作的5%以上,除非过去86400秒内更改了过滤器 (一天)
$wgAbuseFilterEmergencyDisableCount array( 'default' => 2 )
$wgAbuseFilterEmergencyDisableAge array( 'default' => 86400 )
$wgAbuseFilterParserClass 'AbuseFilterParser' 滥用过滤器的解析器级的名字。
$wgAbuseFilterRestrictions array( 'block' => true, 'degroup' => true, 'blockautopromote' => true, 'rangeblock' => true ) 用户必须具有“abusefilter-modify-restricted”用户权限以及“abusefilter-modify”才能创建或修改执行这些操作的过滤器。
$wgAbuseFilterNotifications false 允许配置扩展以发送触发通知至Special:RecentChanges或UDP。 可行的操作: rc, udp, rcandudp
$wgAbuseFilterNotificationsPrivate false 允许私有过滤器使用通知功能。
$wgAbuseFilterCentralDB null 指定全域过滤器的数据库名(只支持在最新开发版)
$wgAbuseFilterIsCentral false 设定为true时指定全域过滤器的存入数据库(只支持在最新开发版)
$wgAbuseFilterDisallowGlobalLocalBlocks false 禁止集中式过滤器执行本地封禁,从组中删除或撤消权限的操作。
$wgAbuseFilterBlockDuration 'indefinite' 滥用过滤器做出的封禁时限。
从1.31.0-wmf.25开始,可以为每个过滤器指定封禁持续时间,并覆盖此变量。 This variable is only used when enabling the block in order to preselect a default duration.
$wgAbuseFilterAnonBlockDuration null AbuseFilter对未登录的用户所做的封禁的持续时间。如果未设置,则将使用$wgAbuseFilterBlockDuration的值。
从1.31.0-wmf.25开始,可以为每个过滤器指定封禁持续时间,并覆盖此变量。 This variable is only used when enabling the block in order to preselect a default duration.
$wgAbuseFilterCustomActionsHandlers array() 自定义动作的回调方法。
$wgAbuseFilterValidGroups array('default') 有效的过滤器组用于将编辑过滤器应用于某些类型的操作
$wgAbuseFilterDefaultWarningMessage array( 'default' => 'abusefilter-warning' ) 每个过滤器组的默认警告信息
$wgAbuseFilterLogIPMaxAge 3 * 30 * 24 * 3600 清除旧IP日志数据时使用的时长作为截止值。默认为3个月。由维护脚本purgeOldLogIPData.php使用。
$wgAbuseFilterProfile false
MediaWiki版本: 1.27

是否记录有关过滤器性能的数据,使用的平均条件数和每个过滤器消耗的时间。

(这在MediaWiki 1.25之前十中启用,然后由于性能原因从1.26完全删除,不过在1.27中恢复。)

$wgAbuseFilterRuntimeProfile false 是否在每次执行时计算和记录总运行时,条件和匹配的过滤器。
$wgAbuseFilterProfileActionsCap 10000 确定何时重置分析统计信息的操作数。


API

滥用过滤器有两个API的list模块,一个用于获得过滤器列表(“abusefilters”),另一个用于获得过滤日志。过滤日志是孤立于其他MediaWiki日志的(日志名为“abuselog”)。不能通过API创建或修改滥用过滤器。

list = abusefilters

列出关于过滤器的信息

参数
  • abfstartid:从该过滤器ID开始列举
  • abfendid:列举到该过滤器ID为止
  • abfdir:列举的方向(older、newer)
  • abfshow:只显示符合对应属性的过滤器(enabled|!enabled|deleted|!deleted|private|!private)
  • abflimit:每次列举最大数量
  • abfprop:欲获取的属性(id|description|pattern|actions|hits|comments|lasteditor|lastedittime|status|private)

如果过滤器是非公开的且您没有查看它的权限,abfprop中某些参数则不会显示。

例子

列出非私有滥用过滤器

list = abuselog

列出过滤器的触发日志。

参数
  • aflstart:从该时间戳开始列举
  • aflend:列举到该时间戳为止
  • afldir:列举的方向(older、newer,分别表示更旧、更新的日志先列出)
  • afluser:只显示该用户或IP地址触发过滤器的日志
  • afltitle:只显示该页面中触发过滤器的日志
  • aflfilter:只显示该过滤器ID的触发日志
  • afllimit:每次列举最大数量
  • aflprop:欲获取的属性(ids|user|title|action|result|timestamp|details)
例如

列出其中触发滥用过滤器响应用户“SineBot”的操作的实例

Possible errors

  • Some users might experience that creating new filters or modifying old filters fail and the user just gets redirected to the original page. If the Wiki is using SSL certificates, this error could possibly be because of the $wgServer value, which might be using "http://" instead of "https://". An indication of this error will be, the browser giving https warning for Special:AbuseFilter pages. (Topic:T23dyyih0ofjada5)

参见