我制作了一个投资组合网站,并选择使用带有西里尔字符的域。可悲的是,它被显示为“xn--80afg8d.me”,丑得要命。
有什么方法可以让浏览器正确显示吗?其他 IDN(如日本 IDN)是否也会发生同样的情况?
我制作了一个投资组合网站,并选择使用带有西里尔字符的域。可悲的是,它被显示为“xn--80afg8d.me”,丑得要命。
有什么方法可以让浏览器正确显示吗?其他 IDN(如日本 IDN)是否也会发生同样的情况?
不幸的是,浏览器供应商使用这种“ punycode ”(RFC 3492)表示来提高与最终用户相关的安全性。这主要是为了避免同形异义词攻击,其中恶意行为者使用西里尔字符注册域名,这些字符看起来与另一个拉丁对应物略有不同,这将更容易对用户进行网络钓鱼攻击。
Google在其源代码控制中有一个有趣的文档,chromium
解释了在 Chromium/Chrome 中发生这种情况的原因和方式:
许多年前,域名只能由拉丁字母 A 到 Z、数字和一些其他字符组成。创建国际化域名 (IDN) 是为了更好地支持全球网络用户的非拉丁字母。
来自不同(甚至相同!)语言的不同字符看起来非常相似。我们已经看到有关概念验证攻击的报告。这些被称为同形异义词攻击。例如,拉丁语“a”看起来很像西里尔字母“а”,因此有人可以注册http://ebay.com (使用西里尔字母“а”),这可能会与http://ebay.com混淆。这是一般浏览器中 URL 显示方式的限制,而不是 Chrome 中的特定错误。
在理想情况下,域名注册商不会允许注册这些易混淆的域名。一些域名注册商正是这样做的,主要是通过限制允许的字符,但许多没有。为了更好地防止这些攻击,浏览器根据自己的 IDN 策略以 punycode(看起来像 xn--...)而不是原始 IDN 显示一些域。
其他主要供应商也发布了类似的文档:
由于这是在单个浏览器级别处理的,如果您真的坚持要绕过您的域的这种 punycode-ification,您必须与每个浏览器供应商合作,以了解如何将您的域列入白名单,使其不再以这种方式显示。粗略搜索此类流程并没有在该领域找到太多实质内容,因此您最好的选择可能是直接与供应商联系。除非您的 Cyrillic 域是 Internet 上访问量最大的约 500 个站点之一,否则我不会对此屏住呼吸。