本站致力于科普电子邮件知识,属于个人blog性质,不接受包括广告投放在内的任何商业赞助。为避免失联,您可以关注mailabc微信公众号。

警惕!零宽字符如何在邮件中 “暗度陈仓”

什么是“零宽字符”?

Unicode “零宽字符”是一类特殊字符,它们在文本中不可见、不占据任何显示空间,但可能影响文本处理、传递隐藏信息,甚至被用于恶意攻击。常见的零宽字符类型:

  • 零宽度空格(Zero Width Space, U+200B):主要用于断词或排版控制(如阿拉伯语连字),不可见但可被复制粘贴。
  • 零宽度非连接符(Zero Width Non-Joiner, U+200C):主要用于阻止相邻字符连写(常见于波斯语、阿拉伯语)。
  • 零宽度连接符(Zero Width Joiner, U+200D):主要用于强制字符连写。
  • 零宽度非断空格(Word Joiner, U+FEFF):主要用于替代传统空格防止换行断开。

如何插入“零宽字符”?

理解零宽字符的含义之后,可以通过工具很轻松的生成相应字符。以零宽度空格(ZWS)为例,通过Python可以轻松打印该字符。演示示例如下图所示,通过print()打印出来的内容中包含零宽度空格。

复制输出的文本粘贴到记事本中(如下图所示),通过统计的字符数可以看出多了一个字符(MailABC原本7个字符,多出一个零宽度字符)。

如果不懂Python也没有关系,有网站专门用于生成、复制此类字符,例如:https://blank-text.com/zh/

“零宽字符”对邮件影响案例分析

下面通过一个示例来演示零宽字符对邮件系统的影响。以网易163邮箱为例,发一封主题为“MailABC”的邮件。正常情况下通过“MailABC”可以检索出该邮件,反垃圾系统同样可以根据这个关键字做出相应动作。但是,当邮件主题中包含零宽字符时,一切就变得不一样了。
小贴士:本地测试粘贴到网易163邮箱正文的零宽字符会被过滤掉,但是主题中的零宽字符不会被过滤掉。

发送一封主题包含零宽字符的邮件

通过浏览器打开收件箱中的这封邮件,审查元素发现主题显示为“Mail​ABC”,表明该邮件主题的确包含零宽字符。

通过“MailABC”关键字搜索该邮件,发现无匹配结果。但是通过“Mail”或者“ABC”关键字可以搜出结果。发送一封主题不包含零宽字符的邮件,仍是以“MailABC”为主题,此时可以发现可以正常搜索出该主题邮件。

通过这个简单的演示示例可以看出,零宽字符对关键词匹配造成了干扰。在邮件领域,此类干扰可能会影响反垃圾过滤、关键字过滤等功能。

总结

零宽字符主要会对反垃圾邮件系统带来影响。反垃圾邮件系统常通过关键词匹配来判断邮件是否为垃圾邮件。攻击者可将零宽字符插入敏感关键词中,使系统难以识别原本的关键词,导致含有这类被零宽字符干扰关键词的正常邮件可能被误判为非垃圾邮件而放行,或者一些正常邮件中因偶然出现类似情况而被误判为垃圾邮件。其次,零宽字符的存在可能破坏文本的正常结构和语义理解,使分析结果出现偏差。比如在一个句子中插入零宽字符,可能使系统对句子的语法分析出错,从而影响对邮件整体内容性质的判断,增加误判概率。


未标注来源的文章均为原创作品,版权所有,转载请注明出处。非原创文章均已标注来源,如有侵权请告知。 如您喜欢本站,可以收藏加关注(扫码关注右上角微信公众号mailabc)。
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址