当您仅限于 ASCII 时,如何表示更复杂的事物,例如表情符号或非拉丁字符?一个答案是 Punycode,它是一种用 ASCII 表示 Unicode 字符的方法。然而,虽然您可以从技术上将 Unicode 的原始位编码为字符,例如 Base64,有一个障碍。域名系统 (DNS) 通常要求主机名不区分大小写,因此无论您输入 HACKADAY.com、HackADay.com 还是只是 hackaday.com,它都会转到同一个位置。
[A。 Costello]在加州大学伯克利分校提出了 Punycode 的想法 RFC 3492 2003 年 XNUMX 月。它概述了一种简单的算法,其中所有常规 ASCII 字符都被拉出并粘在一侧,中间有一个分隔符,在本例中为连字符。然后 Unicode 字符被编码并粘在字符串的末尾。
首先,将数字代码点和字符串中的位置相乘。然后该数字被编码为 BASE-36 (az 和 0-9)可变长度整数。例如,问候语和感谢的希腊语,“嘿,ευχαριστώ” 变成“嘿,-mxahn5algcq2”。同样,美丽的城市 慕尼黑 成为 mnchen-3ya。
正如您在希腊语示例中可能注意到的那样,没有任何东西可以帮助解码器知道哪些 base-36 字符属于哪个原始 Unicode 符号。由于可变长度整数,每个有效数字都是可识别的,因为可以编码的数字存在阈值。有限状态机来救援。 RFC 给出了一些概述该算法的示例性伪代码。它非常聪明,利用了随着解码的进行而滚动的偏差。由于它总是在增加,因此它是一个具有一些巧妙属性的单调函数。
当然,为了防止常规 URL 被解释为 punycode,URL 有一个特殊的小前缀 xn-- 让浏览器知道这是一个代码。这包括所有 Unicode 字符,因此表情符号也有效。那你为什么不能去 xn--mnchen-3ya.de?如果您将其输入浏览器或单击链接,您可能会看到浏览器将令人困惑的字母汤转换为漂亮的 URL(并非所有浏览器都会这样做)。最大的问题是Unicode本身。
虽然 Unicode 提供了令人难以置信的支持,使网络上每天使用的数百种语言成为可能,但我们敢说,即使有些简单,也存在一些缺陷。西里尔字母、零宽度字母和其他 Unicode 怪异允许那些怀有更邪恶意图的人建立一个域名,在渲染时, 显示为知名网站。 SSL 证书有效,其他一切均已检查完毕。西里尔字母包含的字符在视觉上看起来与拉丁字母相同,但表示方式不同。黑客和网络钓鱼尝试的机会太大了,到目前为止,大多数域都不允许使用 punycode。
例如,您能区分这两个域之间的区别吗?
有些浏览器会将悬停文本呈现为 Punycode,有些浏览器会将其保留为 UTF-8 等效形式。 “a”(U+0061) 已被西里尔字母“a”(U+0430) 取代,大多数计算机都使用完全相同的字符进行渲染。
这是一个 IDN 同形异义词攻击,他们依赖用户点击他们无法区分的链接。 2001 年,两名安全研究人员发表了一篇关于该主题的论文,用西里尔字母注册了“microsoft.com”作为概念证明。作为回应,建议顶级域仅接受包含拉丁字符和该国家/地区使用的语言字符的 Unicode 字符。因此,许多常见的美国顶级域名根本不接受 Unicode 域名。至少不可显示的字符是由 ICANN 专门划分的,这避免了一大堆蠕虫病毒,但视觉上相同但按位不同的字符会导致混乱。
然而,针对此类攻击的缓解措施正在慢慢推出。作为第一层保护,如果所有字符都来自同一语言,则 Firefox 和基于 Chromium 的浏览器仅显示非 Punycode 版本。某些浏览器将所有 Unicode URL 转换为 Punycode。其他技术使用光学字符识别 (OCR) 来确定 URL 是否可以进行不同的解释。在浏览器之外,通过短信或电子邮件发送的链接可能不具有相同的智能,并且只有在浏览器中打开它们后您才会知道。到那时,已经太晚了。
抛开挑战不谈,Punycodes 能获得成功吗? Hackaday 会获得 ☠️📅.com 吗?谁知道。但与此同时,我们可以享受 2003 年提出的巧妙解决方案,解决我们尚未完全解决的域名国际化这一棘手问题。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://hackaday.com/2023/01/18/punycodes-explained/
- 2001
- a
- 接受
- 算法
- 所有类型
- 时刻
- 和
- 回答
- 围绕
- 攻击
- 尝试
- 美丽
- 成为
- 作为
- 之间
- 偏见
- 最大
- 浏览器
- 浏览器
- 加州
- 案件
- 证书
- 字符
- 字符识别
- 字符
- 支票
- 城市
- 码
- COM的
- 相当常见
- 复杂
- 电脑
- 概念
- 扑朔迷离
- 混乱
- 兑换
- 可以
- 国家
- 课程
- 天
- 解码
- 确定
- 差异
- 不同
- 数字
- DNS
- 域
- 域名
- 网站域名
- 域名
- 别
- 每
- 电子邮件
- 享受
- 甚至
- EVER
- 每天
- 一切
- 例子
- 解释
- 火狐
- 姓氏:
- 止
- 功能
- 通常
- 得到
- GIF
- 给
- Go
- GOES
- 大
- 迎接
- 黑客
- 有
- 帮助
- 徘徊
- 创新中心
- 但是
- HTTPS
- 数百
- 主意
- 相同
- in
- 包括
- 增加
- 难以置信
- 意图
- IT
- 本身
- 保持
- 知道
- 语言
- 语言
- 大
- 晚了
- 拉丁语
- 层
- 信息
- 邮件
- 友情链接
- 链接
- 小
- 看
- 机
- 制作
- 许多
- 三月
- 与此同时
- 的话
- 可能
- 更多
- 最先进的
- 乘以
- 姓名
- 名称
- 数
- 数字
- OCR
- 天下奇闻
- 优惠精选
- 一
- 打开
- 机会
- 光学字符识别
- 原版的
- 其他名称
- 大纲
- 学校以外
- 纸类
- 钓鱼
- 地方
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 位置
- 可能
- 漂亮
- 防止
- 市场问题
- 证明
- 概念验证
- 建议
- 保护
- 出版
- 原
- 承认
- 建议
- 注册
- 定期
- 更换
- 代表
- 代表
- 需要
- 营救
- 研究人员
- 响应
- 受限
- 导致
- 轧制
- 卷
- 同
- 保安
- 安全研究员
- 集
- 显示
- 显著
- 同样
- 简易
- 慢慢地
- So
- 至今
- 方案,
- 一些
- 有些
- 特别
- 特别是
- SSL
- 仍
- 简单的
- 主题
- 周日
- SUPPORT
- 符号
- 系统
- 技术
- 其
- 事
- 次
- 至
- 一起
- 也有
- 顶级
- 改造
- 类型
- 统一
- 大学
- 美国加州大学
- 网址
- 使用
- 用户
- 利用
- 版本
- 卷筒纸
- 知名
- 什么是
- 是否
- 这
- 而
- WHO
- 维基百科上的数据
- 将
- 蠕虫
- 您一站式解决方案
- 和风网