这里有三个看起来差不多的字符:a、a、α,但是第一个是西里尔文的a,第二个是英文里的a、第三个是俄文里的α(数学题里的阿尔法)
虽然看起来都是A,但计算机显然把它们当成不同的字符来对待。
相信不少读者和宅客一样,脑补出了这样一个画面:
▲孙楠、杨臣刚、王大治
再把文章开头的“苹果官网”的网址和真正的网站来对比着看,你会发现,字母有些“缩小”了,虽然用肉眼几乎无法辨别出来。
说起来,中文域名其实也算是一种“奇奇怪怪的地方语言”,“丫头”的丫字也是字母Y的远房表亲。
DNS服务器很崩溃,它表示:
我可搞不懂这些乱七八糟的“方言”。
(注:DNS即域名解析,通过网站域名来指向网站服务器IP)
为了让DNS服务器能看懂这些“方言”,许多浏览器用一种叫punycode的编码方式,把一些奇奇怪怪的“地方语言”翻译成网络DNS服务器能懂的英文字符。
例如:
企鹅.com,用Punycode转换后为:xn--hoq754q. co
中国.cn,用Punycode转换后为:xn--fiqs8s. cn
你会注意到,punycode转码之后的网站都会以“xn-”作为它的开头。
攻击者注册一个名为:xn--fiqs8s. cn的域名,网址输入到浏览器之后,浏览器会自动还原成“中国.cn”。
攻击者注册一个名为:xn--80ak6aa92e.com,输入到浏览器之后,浏览器会自动还原成“apple.com”
于是也就有了文章开头的一幕。