1

我试图弄清楚什么对域名注册有效,显然有些 Unicode 字符翻译得很奇怪,而另一些则根本没有。

这个地址:

http://xn--ippleman-dmj.com/

转换为:

http://Nippleman.com/

http://xn--ggle-0nda.com/

应翻译为:

http://gοοgle.com/

但由于某种原因,浏览器阻止了它。

这些域的格式是如何确定的,浏览器阻止或不阻止什么?

http://xn--ippleman-dmj.com/是一个有效的 URL,而http://www.gοοgle.com不是。然而 Chrome 只替换了第二个 URL 上的 Unicode。

4

2 回答 2

2

您似乎正在尝试进行IDN 同形异义词攻击。维基百科页面很好地解释了 Chrome 正在做什么来阻止你。

于 2017-03-09T20:34:57.940 回答
1

首先,对于你的问题。有效域名必须符合RFC1035与浏览器无关,即整个域名不得超过 255 个有效 ASCII 字符(八位字节)且不区分大小写。甚至 IDN 也必须遵守这个标准。所以为了显示 IDN,RFC 演化出来了 Punycode 'xn--' 的转换思路。

然后是 IDN 同形异义词攻击的概念证明。目前,Unicode.org 更新并维护了一个易混淆的列表。您可以下载当前版本的 TR39并使用它。

以前,Chrome 和 firefox 会将域名开头转换xn--为在浏览器字体缓存中找到的对应 Unicode。如果浏览器找不到字体,它将显示原始的 'xn--' punycode 域名。

这是已知问题。Firefox 甚至有手动选项来启用/禁用 Punycode 域名显示。Google 决定删除 58+ 版本的转换帖子,而 Firefox 53 将遵循默认显示 Punycode。

我不知道谷歌是否会在 TR39 之外显示 Unicode,或者只是删除所有的 Punycode 到 Unicode 的转换。

于 2017-05-16T14:45:57.850 回答