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

31 lines
No EOL
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 房间的服务器访问控制列表ACLs
在某些场景下,房间管理员可能希望阻止恶意或不受信任的服务器参与他们的房间。向房间发送一个 [m.room.server_acl](#mroomserver_acl) 状态事件,是在联邦层面上阻止服务器参与房间的有效方法。
服务器 ACL 也可用于使房间仅与有限的服务器集合联邦,或事后让房间不再与任何其他服务器联邦,这类似于在 [m.room.create](#mroomcreate) 事件中设置 `m.federate` 值。
{{% event event="m.room.server_acl" %}}
{{% boxes/note %}}
端口号不受支持,因为解析器无法确定应该匹配端口号还是 IP 地址字面量。此外,几乎不会有人只信任某个域上的特定端口而不信任其他端口,尤其是考虑到服务器主机可以轻易更换端口。
{{% /boxes/note %}}
{{% boxes/note %}}
CIDR 表示法不支持 IP 地址,因为 Matrix 并不鼓励使用 IP 作为服务器的身份标识。相反,提供了一个通用的 `allow_ip_literals` 选项用于全面禁止它们。
{{% /boxes/note %}}
#### 客户端行为
客户端除了发送该事件外,无需执行任何额外操作。客户端应在用户界面中描述对服务器 ACL 的更改,例如在时间线上展示。
客户端可以选择在拒绝服务器访问房间之前,先踢出受影响的用户,以帮助防止这些服务器参与,并向用户提供被排除在房间之外的反馈。
#### 服务器行为
当房间状态中存在 [m.room.server_acl](#mroomserver_acl) 事件时,服务器必须阻止被列入黑名单的服务器发送事件或参与房间。具体受影响的 API在服务器-服务器 API 规范中有详细说明。
如果被拒绝的服务器仍然是房间成员,服务器仍应向其发送事件。
#### 安全性考量
服务器 ACL 只有在房间内的每个服务器都遵守它们时才有效。不遵守 ACL 的服务器仍可能允许被拒绝服务器发送的事件进入房间,并将其泄露给房间内的其他服务器。要在房间有效执行 ACL还应在房间内拒绝那些不遵守 ACL 的服务器。