Unicode字符的有效域名注册

时间:2017-03-08 21:42:24

标签: google-chrome url unicode dns punycode

我正在试图弄清楚什么是有效的域名注册,显然有些Unicode字符很奇怪,而其他人根本没有。

这个地址:

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

转换为:

http://Nippleman.com/

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

应转换为:

http://gοοgle.com/

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

如何确定这些域的格式以及浏览器阻止或不阻止的内容?

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

2 个答案:

答案 0 :(得分:2)

您似乎正在尝试IDN homograph attack。维基百科页面很好地解释了Chrome阻止你做什么。

答案 1 :(得分: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显示为默认值。

我不知道Google是否会在TR39内部显示Unicode,或者只是为所有人删除Punycode到Unicode的转换。