驗證 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