You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

浏览器会将哪些主机名以Punycode显示?其判定规则是什么?

浏览器显示Punycode的判定规则及同形字符攻击防范逻辑

核心判定逻辑

浏览器决定是否显示Punycode,核心依据是Unicode字符的归属区块与预定义的安全字符规则,而非字符的视觉相似度。

两种显示场景的具体规则

  • 保留原URL显示,仅内部转换为Punycode
    当域名中的非ASCII字符属于对应语言的合法常用字符集,且归属的Unicode区块被标记为“安全”时,浏览器会在内部将其转换为Punycode以兼容DNS解析,但地址栏仍显示原Unicode域名。
    比如你提到的http://gibts.überhaupt.nicht,其中的ü属于Latin-1 Supplement Unicode区块,是德语的标准合法字符,因此地址栏保留原显示。

  • 强制显示Punycode
    当域名中的字符属于易引发同形混淆的Unicode区块(比如修饰字母、半宽/全宽字符、非标准拉丁变种等),即使视觉上和普通拉丁字母高度相似,浏览器也会强制显示Punycode。
    比如http://ᴅᴏᴇs.not.exist中的ᴅᴏᴇs属于“修饰字母-小写”这类区块,和普通拉丁字母does视觉近似但编码完全不同,浏览器会显示对应的Punycodehttp://xn--s-h6lg5a.not.exist,避免用户被钓鱼域名误导。

关于同形字符攻击的判定依据

判定时不直接考量字符的视觉相似度,而是依赖浏览器预设的Unicode区块分类和安全字符列表:

  1. 浏览器会将所有非ASCII字符按Unicode区块归类;
  2. 仅允许属于“常用语言标准字符区块”的字符保留原显示;
  3. 所有归属到易混淆区块的字符,一律强制显示Punycode,以此防范同形字符钓鱼攻击。

内容的提问来源于stack exchange,提问作者Heiko Theißen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:45:39