验证 JID(通用)
与电子邮件不同,JID 使用国际化(i18n)定义,使用国际化字符串的准备,执行和比较(PRECIS)框架。PRECIS(在 RFC 7564 中定义 )是一个在各种环境中安全地比较字符串的框架。例如,假设你在群聊中注册了昵称 Richard IV
(拉丁语大写字母 I,Vee):使用 PRECIS 聊天应用程序可以确保没有其他人出现并注册昵称“RichardⅣ”(Unicode Roman 数字 4)并用它来冒充你。
用于验证已分割为其 localpart,domainpart 和 resourcepart 的 JID 的算法(请参阅: 拆分 JID(通用) 以获取有关从字符串中提取 JID 部分的信息),如下所示:
Validations
步骤应执行以下操作:
- 检查 localpart 是否小于 1024 字节(字节,不是字形)
- 检查 localpart 是否包含
"&'/:<>@
中的任何一个 - 检查 resourcepart 是否小于 1024 字节
- 检查 domainpart 是否大于零字节且小于 1024 字节(并且可能验证域的各个部分是否符合 DNS 要求)
- 如果域是有效的 IPv6 地址,则继续使用括号表示法(例如,
[::1]
而不是::1
)