同一件事的兩種寫法:Unicode 主機名與它的 punycode 形式
| 寫法一(Unicode) | 例え.shop.example |
| 寫法二(punycode,瀏覽器實際查詢的形式) | xn--r8jz45g.shop.example(示意——精確字串依 IDNA 編碼函式庫而定,這裡只示範概念) |
| 關係 | 這兩個是同一個主機的兩種表示法,不是兩個網域——DNS 查詢時瀏覽器一律轉成 punycode 形式再查。 |
另一種情況:仿冒同形字(homograph)
| 真正的網域 | shop.example |
| 仿冒版(用西里爾字母 о 取代拉丁字母 o) | shоp.example(肉眼幾乎看不出差別) |
| 仿冒版的 punycode(示意) | xn--shp-2xa.example(示意,不保證逐字正確) |
| 關係 | 這兩個看起來一樣,但是完全不同的兩個網域——這才是要拒絕的那一種。 |
這一頁在測什麼
| 同一主機的兩種寫法要合併 | Unicode 形式與其對應的 punycode 形式,建成兩個監控會產生重複通知——兩者是同一個身分。 |
| 仿冒同形字要拒絕或警示 | 肉眼相似但 codepoint 不同的主機名稱,是網域仿冒的標準手法;建立監控時應該能標出「這個主機名含有可疑的混合文字系統」。 |
| 判斷依據不能是視覺 | 永遠比對 punycode/NFC 正規化後的實際字元,不能比對畫面看起來像不像。 |
平台必須不做的事:只憑視覺相似度判斷兩個網域是不是同一個,或反過來,把 Unicode 與其 punycode 形式當成兩個不同的目標。
← 回 URL 測試 全部