为什么 URL 域中的西里尔字母看起来如此奇怪?

Sal*_*ali 6 url encoding

简短说明:

为什么 URL 中域名中的俄语字符????????????????.??会映射到这样的随机性:http://xn--80aaigamcyttbbjfe2c.xn--p1ai. 请注意,我不是在谈论这样的 URL 解码问题:http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0

长解释:

我正在查看最近的 Heartbleed 漏洞利用存在问题的站点列表,一个奇怪域名的站点让我感到惊讶:http://xn--80aaigamcyttbbjfe2c.xn--p1ai/. 在任何其他情况下,我会假设这是色情/伟哥/exploit/dyingNigerianPriceSendingMoney 类型的网站(基于它的神秘名称),但对于此类事情,全球排名46000是不可能的。

查看该网站,它看起来像是俄语,基于谷歌翻译 - 它与政治有关。但是谁会用这样的网址访问这个网站?当我进一步调查它时,我发现它实际上具有像这样的正常 url ( ????????????????.??/?)。但是当我将它输入到我的地址栏中时,它会将其更改为以前的 url。

那么这里的问题是什么?为什么????????????????.??/?映射到http://xn--80aaigamcyttbbjfe2c.xn--p1ai/.

Law*_*ceC 6

那么这里的问题是什么?为什么 ????????????????。??/?映射到http://xn--80aaigamcyttbbjfe2c.xn--p1ai/

DNS 很旧,历史上只支持 26 个拉丁字符 A 到 Z 和破折号。我想 DNS 的最初设计者认为它不会持续足够长的时间在国际上使用或类似的东西。

然而,当然互联网是国际化的,所以域名也应该是国际化的。

HTTP://xn--80aaigamcyttbbjfe2c.xn--p1ai/实际上是被称为编码系统的Punycode -这是代表一个域名的DNS字符集内的非DNS字符集的方式。这些域称为国际化域名(IDN)。

大多数最新的浏览器将在本地字符集中显示 IDN,如果配置这样做的话。Punycode 是在后台发送到 DNS 服务器的内容。如果您的浏览器中没有显示 IDN,您应该更新您的浏览器或检查您的设置。

我有上述印象,但在阅读本文后,似乎为了防止使用看起来相似的字符进行域网络钓鱼,应用算法或白名单来确定哪些 IDN 显示为本地字符或 punycode。

Chrome 算法的一部分是您当前的语言设置。

当我进入 Chrome 的设置、语言和输入设置、添加俄语并选择它时,http://xn--80aaigamcyttbbjfe2c.xn--p1ai显示为 ??????????? ???????.?? 在浏览器中。