docs-matrix-spec/locales/zh-Hans/client-server-api/modules/moderation_policies.md
2025-04-20 16:13:37 +08:00

4.1 KiB
Raw Blame History

内容审核策略列表

Matrix 作为一个开放网络,任何人都可以参与,因而存在着种类极为丰富的内容。让用户有权选择希望看到的内容以及想要屏蔽的内容显得尤为重要。进一步来说,房间管理员和服务器管理员同样应当能够选择他们不希望在其房间和服务器中托管的内容。

协议对此持中立立场:它不应为任何特定实体判断哪些内容为不当内容,而应赋权这些实体自行做出决策。因此,这里描述了一套通用框架,用于传递“内容审核策略列表”或“内容审核策略房间”。需要注意的是,本模块仅描述数据结构,而不涉及如何解读它们:决定过滤内容的实体最适合根据自身需求解读这些规则。

内容审核策略列表以房间状态事件的形式存储。对于房间的配置没有任何限制(可以是公开、私有、加密等)。

目前有三类实体可能会被规则影响:user(用户)、server(服务器)和 room(房间)。三者均以 m.policy.rule.<kind> 状态事件进行描述。策略规则的 state_key 是由规则发送者自定义的任意字符串。

规则包含关于为何制定此规则的建议及原因。reason 是描述 recommendation 的、供人阅读的字符串。目前,仅定义了一个建议类型——m.ban

m.ban 建议

当使用此建议时,应尽可能禁止规则中所影响的实体参与活动。其执行方式特意作为实现细节留给开发者,以避免协议对如何解读策略列表做出强制规定。以下是一个简单实现建议:

  • 针对 user(用户)规则...
    • 作用于用户:应将该用户加入订阅者的忽略列表。
    • 作用于房间:应禁止该用户进入该房间(可见时或立即)。
    • 作用于服务器:不应允许该用户向服务器上的其他用户发送邀请。
  • 针对 room(房间)规则...
    • 作用于用户:该用户应离开该房间,并不得重新加入(参见 MSC2270 风格的忽略策略)。
    • 作用于房间:无操作,因为房间无法对自己执行禁令。
    • 作用于服务器:服务器应阻止用户加入该房间,并阻止他们收到该房间的邀请。
  • 针对 server(服务器)规则...
    • 作用于用户:不应让该用户从该服务器接收事件或邀请。
    • 作用于房间:应将该服务器添加到 ACL 的拒绝服务器列表中。
    • 作用于服务器:订阅者应尽量避免与该服务器进行联邦交互,通过阻止来自该服务器的邀请,不发送除非必要的流量(不发送外部邀请)来实现。

订阅策略列表

这一部分有意留作实现细节。对于使用客户端-服务器 API 的实现而言,这只需像加入或窥视房间一样简单。但加入或窥视并非必需:实现可以通过轮询更新或采用其他方式接收策略规则的更新。

事件

状态事件中描述的 entity 采用 glob 风格模式进行解释。注意,针对房间的规则既可以描述房间 ID 也可以描述房间别名——如有需要,由订阅者负责将别名解析为房间 ID。

{{% event event="m.policy.rule.user" %}}

{{% event event="m.policy.rule.room" %}}

{{% event event="m.policy.rule.server" %}}

客户端行为

如上所述,客户端行为未做强制定义。

服务器行为

本模块对服务器没有提出额外要求。

安全考虑

本模块可用于构建一套共享黑名单系统,如果部署不当,可能导致现有社区出现分化。对所有社群而言,这未必是合适的解决方案。

具体实现中依据如何处理订阅关系用户ID 有可能与策略列表关联进而暴露该用户的立场。例如,若客户端实现让用户加入策略房间,则会向策略房间的观察者显示该用户的 ID。未来MSC1228MSC1777(或相似手段)可有助于缓解这一问题。