Extension:Moderation(节制)
Moderation(節制)扩展可以提供对于中小型维基的惡意破坏的保护措施。
这是最有效的反制破坏方法之一、且只对正當的用户有极小的影响。
简介
- 它是如何工作的?
- 新用户的每次编辑(或图像上传)都被发送到一個節制的队列中。
- 在節制者批准此编辑之前,页面不变。待处理的编辑也不會在页面历史记录中、也不在最近更改中。
- 新用户可以看见并繼續修改自己的编辑版本。
- 管理者如何审核编辑?
- 提供有一个新特殊页面(Special:Moderation)。 这很像最近更改頁面,但是有「接受」、「拒绝」、「全部接受」、「全部拒绝」四个按鈕。
- 被拒绝的编辑被自动归档。
- 被核准的编辑会被自动套用。
- 「誰审核了什麼」记录会被保存,仅節制者(版主)可见。
- 如果偵測有编辑冲突且無法自動解決時,節制者可透過合併按鈕手動套用編輯內容。
- 它為何較好?
- 新用户不会因为惱人的驗證碼或手机验证等而卻步。 他们可以正常编辑,就像没有節制(Moderation)這個扩展一样。
- 封禁變成英雄無用武之地。 封禁措施並非萬全之策(試想範圍封禁可能誤傷正當的用戶、或無法讓能力尚不足的用戶進行優質編輯——儘管他們偶爾會衝動破壞一兩頁內容)。
- 出於「博取關注」的破壞行為是不被鼓勵。但一旦眾所周知這些行為並無不妥,便不會有人耗費五小時不斷尋找新的破壞或是代理破壞來惹怒管理員。
- 諸如「使用兩個帳號破壞同一頁面以防止一鍵還原」這類破壞手法已不再有效。
- 網站可在TOR或I2P等匿名網絡中運作。
- 使用者可透過及時修正錯誤,使其不顯示於修訂紀錄中,甚至隱藏於節制者的視線之外。
- 因為任何編輯內容僅在獲得批准後才會永久記錄,使用者可修正一團亂的編輯摘要。
替代

MediaWiki 是否有其他反制破壞的方法?簡單說來——『其實沒有』。
MediaWiki 是為維基百科所開發的。 維基百科隨時都有一百多名志願工作者,隨時準備即時恢復遭破壞的頁面內容。 除了維基百科之外,幾乎所有的其他維基網站,都不具備那樣的優勢。 MediaWiki內建的反制破壞機制的理念在於:破壞行為所需耗費的時間,往往比還原操作更為長。 通常情況下確實如此,但這種做法對遏止破壞行為成效不彰,因為管理員仍需頻繁檢查破壞行為——即便還原操作本身並未耗費太多時間。
目前已知有『三種對抗破壞行為的方法』:
- 讓所有編輯變得困難。 例如,Lurkmore.to 對所有新用戶的編輯都實施嚴格的驗證碼機制,需要累積大量編輯次數後,才能最終獲得免驗證碼編輯的權限。 因此破壞者必須耗費大量時間才能完成寥寥數次的編輯。
- 明顯的缺點在於,所有正當的使用者也必須越過驗證碼,這可能阻礙諸如錯字修正等次要的編輯。
- 強制執行使用者身份驗證--例如透過 Facebook 登入。 若社交網絡驗證所有用戶均持有有效手機號碼,則每次破壞行為都變成是要求破壞者前往商店去買新SIM卡。 此方法極為有效,但消滅了匿名編輯的功能、並將沒有任何有支援此功能的社交網絡帳號的使用者拒於門外。
- 減輕惡意破壞造成的後果。 例如,使用者可以建立100個標題帶有冒犯性內容的頁面,但這些頁面只需在Extension:Nuke(大量删除)中兩次點擊就能以全部刪除。 節制擴充功能屬於此類別。
这个扩展稳定么?
此擴充功能已進入穩定階段。自2014年11月起,已於俄羅斯偽基百科(absurdopedia.net)正式環境部署運作。
此擴充功能具備一套涵蓋範圍廣泛(包含phpunit及Selenium)的自動化測試套件,所有對節制功能的變更皆會自動於下列環境進行測試:
- 最新版本的MediaWiki
- Latest LTS versions of MediaWiki (such as 1.43 or 1.39) that haven't been declared obsolete
如有任何疑問,歡迎隨時透過聯絡作者。
與FlaggedRevs(标记修订)或Approved Revs(核准修订)有何不同?
Extension:FlaggedRevs(标记修订) 和 Extension:Approved Revs 僅對讀者隱藏不良的修訂。破壞性編輯仍會存在於歷史記錄與近期變更中,所有編輯者嘗試編輯遭破壞頁面時仍會遭遇這些內容。因此編輯者必須迅速回退破壞行為。
另一方面,節制機制能徹底杜絕破壞性編輯:未經核准的修訂版本根本不會出現在頁面歷史紀錄中。此舉不僅確保讀者不會看見破壞性編輯,其他編輯者同樣無法在任何頁面中察覺這些破壞行為。
簡而言之,(1)FlaggedRevs 用於品質控制,但無法對抗持續性的破壞行為;(2)節制機制專門針對破壞行為,能使其完全失效。
| 節制機制 | FlaggedRevs/ApprovedRevs | |
|---|---|---|
| 读者是否有看到破坏行为? | No | No |
| 编辑者是否有看到破坏行为? | No | 是 |
| 破坏行为是否仍存在於页面历史中? | No | 是 |
| 可以快速拒绝該用户的所有编辑吗? | 是 | No |
| 其他编辑者可以改善未经批准的编辑吗? (不是故意破坏) | No | 是 |
安裝
針對 MediaWiki 的現代版本(1.39+),請使用以下指令:
- 使用
git clone https://github.com/edwardspec/mediawiki-moderation.git查看源代码文件,并将其放置在您extensions/文件夹中的Moderation目录内。 - 請新增下列代码到您的LocalSettings.php文件的底部:
wfLoadExtension( 'Moderation' );
- 請运行更新脚本,它将自动创建此扩展所必须的数据库表。
完成 – 請导航至您的wiki上的Special:Version,以验证此扩展已成功安装。
舊版 MediaWiki 安裝說明
For MediaWiki 1.39-1.42, replace the above-mentioned "git clone" command with the following:
git clone -b REL1_39 https://github.com/edwardspec/mediawiki-moderation.git
For MediaWiki 1.35-1.38, replace the above-mentioned "git clone" command with the following:
git clone -b REL1_35 https://github.com/edwardspec/mediawiki-moderation.git
針對 MediaWiki 1.31-1.34,請將上述的「git clone」指令替換為這個:
git clone -b REL1_31 https://github.com/edwardspec/mediawiki-moderation.git
針對 MediaWiki 1.27-1.30,請將上述的「git clone」指令替換為這個:
git clone -b REL1_27 https://github.com/edwardspec/mediawiki-moderation.git
針對 MediaWiki 1.23-1.26,請將上述的「git clone」指令替換為這個:
git clone -b REL1_23 https://github.com/edwardspec/mediawiki-moderation.git
這些版本仍可能收到安全性修復程序(若有提供),但不再包含新功能。
配置
<span id="Parameters_for_LocalSettings.php">
- $wgModerationEnable
- 若設定為
false,則新編輯將正常套用(不會送到節制機制)。預設值:true. - $wgModerationTimeToOverrideRejection
- 被拒絕的編輯在經過此時間(以秒為單位)後,將無法再被批准。預設值:2週。 節制者注意:舊的被拒絕編輯內容並「不會」被刪除(即使時間已過,節制者仍可隨時在「已拒絕」資料夾中查看這些內容)。
- $wgModerationOnlyInNamespaces
- 若設定為命名空間編號的陣列(例如
$wgModerationOnlyInNamespaces = [ NS_MAIN, NS_FILE ];),則僅在這些命名空間中啟用節制機制(其他命名空間的編輯將繞過節制)。預設值(空陣列):所有命名空間均啟用節制機制。 - $wgModerationIgnoredInNamespaces
- 若設定為命名空間編號的陣列(例如
$wgModerationIgnoredInNamespaces = [ NS_MAIN, NS_FILE ];),非自動節制使用者即可在這些命名空間中繞過節制機制。預設值(空陣列):任何命名空間皆無法繞過節制機制。 - $wgModerationNotificationEnable
- 若設定為
true,每當有編輯內容排入節制佇列時,系統將向 $wgModerationEmail(例如$wgModerationEmail = 'send.to.this.address@example.com';)寄送通知郵件。預設值:false. - $wgModerationNotificationNewOnly
- 若為
true,僅通知新頁面(但不通知現有頁面的編輯)。預設值:false.
另請參閱:#僅供發佈前審閱的組態選項(此類選項95%的維基不建議使用)。
編輯須知
當非受信任群組的用戶編輯頁面時,系統會在頁面頂端添加訊息,告知用戶該頁面已啟用節制機制。 You can edit this message by editing the MediaWiki:Moderation-edit-queued page.
用户权限
此擴充功能新增了兩個群組(automoderated 與 moderator),其擁有以下權限:
| 權限 | 使用者能做什麼? | 誰擁有此權限?(預設情況下) |
|---|---|---|
skip-moderation
|
各種的編輯將如常套用(不會送交節制機制)。 | automoderated, sysop, bot |
skip-move-moderation
|
各種的頁面移動 將如常套用(不會送交節制機制)。 | automoderated, sysop, bot |
moderation
|
可存取 Special:Moderation | moderator, sysop |
moderation-checkuser
|
可在Special:Moderation中看到已註冊用戶們的IP位址。 | checkuser |
額外的反制破坏的提示
为了防止破坏,应采取以下額外措施:
- 請將頁面重命名權限限制於可信賴的群組(不僅限於
automoderated),因為此功能可能被用於難以回退的破壞行為。$wgGroupPermissions['automoderated']['skip-move-moderation'] = false; $wgGroupPermissions['sysop']['skip-move-moderation'] = true;
- 使用帶有冒犯的名稱註冊新帳號,仍是破壞者在「最近變更」頁面顯露蹤跡的方式。簡易的解決方案是將新用戶日誌從「最近變更」中移除:
$wgLogRestrictions["newusers"] = 'moderation';
推荐用法/良好做法
建议采取以下良好做法:
- 仅破坏行为应被拒绝。 出自善意但結果不太好的編輯(例如在維基裏的某個電影條目中添加過多劇情的細節),宜先批准再按慣例撤回,並於編輯摘要中註明原因。 如此一來,作者不會感到被冒犯、且文本會被保存於頁面歷史中、任何人都能看得到以確保透明的公開性與編輯者的問責性。
- 任何被認定為正當(完成N次優質編輯)的用戶應被加入
automoderated群組。 - 「不」建議透過
$wgAutopromote條件讓使用者加入automoderated群組,此舉將誘使惡意破壞者進行大量的次要編輯(例如添加跨維基連結)。 不如將獎勵改為:完成一次的優質編輯即可手動晉升至automoderated等級,而非為累積30次無效編輯而晉升。 - 請戒掉封禁的使用。 除非涉及重要的模板,否則請勿「以防萬一」來保護頁面。
- 請允許完全恢復曾有不良編輯紀錄的使用者權限。 他們對條目的有益編輯應予允許,無論他們被封禁過多少次。 與此同時,討論頁面的惡意挑釁應予拒絕、故意提交低品質編輯的行為亦應如此。
- 請注意,編輯者看似重新提交已被拒絕的編輯內容,未必意味著其意圖挑起編輯戰,而是該編輯者可能在未察覺該待審中的編輯內容已被拒絕的情況下,對它又進行了修改。
不建議用途:作為發佈前審查的延伸功能
節制機制首先是反制破壞工具,但某些維基也運用它進行品質管控。例如,科學著作的維基可能選擇去做:
- 在任何編輯內容未達到業界嚴格的品質標準之前,均不予批准。
- 不拒絕任何「尚未臻完善」的編輯,讓作者得以持續修改直至完美。
此方法的優勢:
- 新頁面呈現為經過完整審閱、格式正確、且無錯字等等問題的文檔。
- 除了作者和節制者之外,沒有人會看見這些不完美的修訂版本。
劣勢:
- 在文章獲得核准之前,其他使用者們無法進行編輯。事實上,他們甚至不會知道這篇文章的存在。
- 待審核的變更並沒有「編輯歷史紀錄」。節制功能僅為每個頁面/使用者組合儲存一項待審核變更。若您需耗時數週來準備頁面發佈,此機制將造成不便。使用者甚至可能誤刪待審修訂版本中的必要內容,且該內容將無法復原。
僅供發佈前審閱的組態選項
以下參數僅在使用節制的審查功能時需要設定。對於95%的維基站點,這些參數均『不建議使用』(若遵循最佳實踐,則完全無需設定)。
| 名稱 | 默认值 | 描述 |
|---|---|---|
| $wgModerationPreviewLink | false
|
若為 true,預覽連結將顯示在 Special:Moderation 頁面。
為何不建議?答:遵循最佳實踐時,絕不應僅因格式欠佳就拒絕優質修改。無論此編輯是否優質,您可透過「差異」連結知道。而「預覽」連結僅顯示「頁面當前格式」,此資訊不應影響您的判斷。 |
| $wgModerationEnableEditChange | false
|
若為 true,節制者可在核准前修改待審修改的內容。
為何不建議?答:容易出錯。節制者可能誤刪待審編輯的內容(且無法復原)。更甚者,這些修改不會標示節制者為修改者(審核通過後,看起來像是原始作者自行修改),這點令人毛骨悚然。 |
可讓節制者將用戶標記為自動節制狀態
預設情況下,任何 sysop 皆可將使用者新增至 automoderated 與 moderator 群組中。
若您想讓節制者能標記使用者為automoderated,可使用以下設定:
$wgAddGroups['moderator'][] = 'automoderated';
$wgRemoveGroups['moderator'][] = 'automoderated';
與其他擴充功能的相容性
- 應在
LocalSettings.php中『最後』才啟用"擴充功能:節制"這個功能,因為它至少會中止鉤點MultiContentSave。 - "擴充功能:節制"完全支援 Extension:CheckUser(用户查核),這意味著若啟用CheckUser擴充功能,任何經核准的編輯都將把正確的 IP、使用者代理程式、及XFF儲存至檢查使用者資料表中。
- "擴充功能:節制"完全相容於 Extension:VisualEditor 與 Extension:MobileFrontend(移动版前端)。 理論上它也應該能與其他基於API的編輯器配合使用。
- 扩展:结构式讨论(亦稱Flow)與 Extension:CommentStreams 皆可運作,但 Flow/CommentStreams 論壇中的編輯內容將繞過節制機制。
- Flow論壇的節制機制應直接在Extension:StructuredDiscussions擴充功能中實作。這些論壇採用非文字的「內容模型」格式,而此格式不被節制功能所支援。
- CommentStreams extension misinterprets "edit was queued for moderation" as an error, which can only be fixed in Extension:CommentStreams itself.
- 目前尚未支援修改多重內容修訂版多個槽位(不僅限於主要槽位,如同MediaWiki本身的做法)的擴充功能。 (目前極少數擴充套件可支援)
參見
- Extension:ConfirmEdit - 常见的CAPTCHA扩展。
- Extension:AbuseFilter(滥用过滤器) - 常見的擴充功能,用於對抗垃圾機器人及典型惡意破壞行為(如清空頁面)。
- 批准内容扩展
| 此扩展在以下wiki农场/托管网站和/或软件包中提供: |
- Stable extensions/zh
- Special page extensions/zh
- Extensions which add rights/zh
- AlternateEdit extensions/zh
- ApiBeforeMain extensions/zh
- ApiCheckCanExecute extensions/zh
- BeforePageDisplay extensions/zh
- CheckUserInsertForRecentChange extensions/zh
- EchoCanAbortNewMessagesAlert extensions/zh
- EditFilter extensions/zh
- EditFormInitialText extensions/zh
- EditFormPreloadText extensions/zh
- EditPage::showEditForm:fields extensions/zh
- FileUpload extensions/zh
- GetNewMessagesAlert extensions/zh
- GetUserPermissionsErrors extensions/zh
- ListDefinedTags extensions/zh
- LoadExtensionSchemaUpdates extensions/zh
- LocalUserCreated extensions/zh
- MultiContentSave extensions/zh
- PageForms::EditFormInitialText extensions/zh
- PageForms::EditFormPreloadText extensions/zh
- PageMoveCompleting extensions/zh
- PageSaveComplete extensions/zh
- RecentChange save extensions/zh
- RevisionFromEditComplete extensions/zh
- SpecialPageBeforeExecute extensions/zh
- TitleMove extensions/zh
- UploadVerifyUpload extensions/zh
- WgQueryPages extensions/zh
- GPL licensed extensions/zh
- Extensions in GitHub version control/zh
- All extensions/zh
- Pages using deprecated NoteTA template
- Extensions included in Miraheze/zh
- Extensions included in MyWikis/zh
- Extensions included in ProWiki/zh
- Spam management extensions/zh
- Revision management extensions/zh
