覆盖的字符
不可见 Unicode 字符指南
有些 Unicode 字符没有宽度、也不可读——却可以给文档留下隐形水印、把关键词无声拆开,或让文件名显示成另一个样子。本指南覆盖 AIPwn 文本检查器检测的隐匿字符:它们是什么、有哪些正当用途、又被如何滥用。检测全程在浏览器本地完成,不上传内容。
零宽空格(U+200B)
U+200B 零宽空格是一个不占据任何水平空间的不可见字符。它不属于任何文字系统:排版引擎用它标记可换行位置,而隐写工具则用它把隐藏信息编码进看似普通的文本。复制包含 U+200B 的文本时,这些不可见字符会随之一并被复制。
常见滥用: 隐形水印:防泄漏工具会在文档中植入 U+200B 序列,使每个接收者的副本都携带唯一的隐藏指纹,泄露后可溯源。
正当用途: 部分排版引擎会在可换行位置插入 U+200B,某些编辑器在格式化后也会残留。字符存在本身不等于恶意篡改——请结合上下文判断。
零宽不连字(U+200C)
U+200C 零宽不连字是一个阻止相邻字母连写的不可见字符。它在连写文字中有真实的语言学职能,同时又在任何环境下都不可见——这让它同样适合被用来隐藏信息或伪造同名外观。
常见滥用: 仿冒账号名:在用户名或品牌名中插入 U+200C,渲染结果完全相同,字符串却不同。
正当用途: U+200C 是波斯文、乌尔都文、库尔德文及多种印度系文字正字法中的必要字形控制符,也出现在部分文本整形场景。如果文本来自这些语言,检出它属于正常现象——请审查上下文,而非直接认定篡改。
零宽连接符(U+200D)
U+200D 零宽连接符是一个把相邻字符连接为一个整形单元的不可见字符。它是组合 emoji(家庭、职业、肤色序列)的基础,也是复杂文字的字形控制符——正因为它不可见,同样可以被用来隐藏数据或无痕拆分关键词。
常见滥用: 隐形拆词:在单词内部插入 U+200D,肉眼阅读不变,但精确匹配的搜索、过滤器与比较全部失效。
正当用途: 大多数组合 emoji,以及印地文等复杂书写系统的正确字形都离不开 U+200D。在这些场景中检出它属于正常——按上下文判断,而非仅凭存在。
从右向左覆盖符(U+202E)
U+202E 从右向左覆盖符是一个双向控制符:它会反转其后所有文本的渲染方向,直到段落结束或被取消。字符本身没有变——变的只是你看到的内容。这种逻辑顺序与可见顺序之间的落差,正是攻击者利用的点。
常见滥用: 文件名欺骗:可执行文件可以显示为 `photo.jpg`,而真实扩展名仍是可执行——RLO 反转的是显示,不是操作系统实际执行的名字。
正当用途: RLO 的设计用途是在从左向右的文本中嵌入从右向左的引文或名称,而不必依赖完整的双向算法。它并不常见;在文件名、代码或 URL 中出现时都值得复核。