验证 JID(通用)

与电子邮件不同,JID 使用国际化(i18n)定义,使用国际化字符串的准备,执行和比较(PRECIS)框架。PRECIS(在 RFC 7564 中定义 )是一个在各种环境中安全地比较字符串的框架。例如,假设你在群聊中注册了昵称 Richard IV(拉丁语大写字母 I,Vee):使用 PRECIS 聊天应用程序可以确保没有其他人出现并注册昵称“RichardⅣ”(Unicode Roman 数字 4)并用它来冒充你。

用于验证已分割为其 localpart,domainpart 和 resourcepart 的 JID 的算法(请参阅: 拆分 JID(通用) 以获取有关从字符串中提取 JID 部分的信息),如下所示:

StackOverflow 文档

Validations 步骤应执行以下操作:

  • 检查 localpart 是否小于 1024 字节(字节,不是字形)
  • 检查 localpart 是否包含 "&'/:<>@ 中的任何一个
  • 检查 resourcepart 是否小于 1024 字节
  • 检查 domainpart 是否大于零字节且小于 1024 字节(并且可能验证域的各个部分是否符合 DNS 要求)
  • 如果域是有效的 IPv6 地址,则继续使用括号表示法(例如,[::1] 而不是::1