如果我使用诸如www.äöü.com 之类的域,有什么方法可以避免它在用户的浏览器中显示为www.xn--4ca0bs.com ?
我猜,像www.xn--4ca0bs.com这样的域名会引起普通互联网用户的很多困惑。
这完全取决于浏览器。事实上,IDN 几乎是一种仅限浏览器的技术。域名不能包含非 ASCII 字符,因此实际的域名始终是 Punycode 编码xn--...
形式。由浏览器来美化这一点,但许多人选择不这样做,以避免使用相似的 Unicode 字符进行域名欺骗。
从安全角度来看,Unicode 域可能存在问题,因为许多 Unicode 字符很难与常见的 ASCII 字符(或实际上是其他 Unicode 字符)区分开来。
可以注册“xn–pple-43d.com”等域名,相当于“аapple.com”。乍一看可能并不明显,但“аapple.com”使用西里尔字母“а”(U+0430)而不是 ASCII “a”(U+0061)。这被称为同形异义词攻击。
幸运的是,现代浏览器有适当的机制来限制 IDN 同形异义词攻击。chrome 上的 IDN 政策页面突出显示了 IDN 以其本机 Unicode 形式显示的条件。一般来说,如果域标签包含来自多种不同语言的字符,则 Unicode 形式将被隐藏。如上所述的“аapple.com”域将以 Punycode 形式显示为“xn–pple-43d.com”,以减少与真正的“apple.com”的混淆。
有关更多信息,请参阅Xudong Zheng 的这篇博文。
Windows 7 上的 Internet Explorer 8.0 可以很好地显示您的 UTF-8 域。另一方面,Google Chrome 19 没有。
在此处阅读更多信息:多语言网址简介#phishing。
不同的浏览器给的东西不同,可能是因为有些使用系统codepage/locale/encoding/wtvr。而其他人则使用他们自己的设置,或允许的字符列表。
仔细阅读那篇文章,它解释了每个浏览器在做出决定时是如何工作的。如果您针对的是特定语言,则可以摆脱它并使其发挥作用。