我正在尝试检测同形异义词攻击和其他攻击,其中攻击者使用看起来与可信域名相似的欺骗域名(例如,bankofthevvest.com 而不是 bankofthewest.com)。
是否有适合编程使用的视觉相似字符的字典或数据库?
例如,如果我查找“l”,我想返回一个列表,表明“l”在视觉上类似于“1”和“i”(至少在某些字体中)。如果我查找“w”,它可能会告诉我它在视觉上类似于“vv”(在某些字体中)。如果我查找“d”,它可能会告诉我它在视觉上类似于“cl”(在某些字体中)。至少现在,我的重点是 ASCII 字符之间的视觉相似性。忽略 Unicode 很好。(但是,如果有一个列表也知道哪些 Unicode 字符在视觉上与每个 ASCII 字符相似,那将是一个额外的好处。)
如果这样的事情已经存在,我想避免重新发明轮子。这样的清单是否已经存在?
这是我到目前为止发现的:
我发现是否有用于垃圾邮件处理的明显相似的 Unicode 字符字典?,但问题集中在 Unicode 上,那里的答案并没有真正解决这个问题:他们提出了一种替代检测机制。
以下两篇研究论文设计了UC-SimList,这是一个视觉上相似的字符列表。但是,它侧重于 Unicode 字符,并且 ASCII 字母之间没有相似性(例如,l 与 1,vv 与 w)。
Anthony Y. Fu、邓小铁、刘文银、Greg Little。 对抗 Unicode 攻击的方法和应用。汤 2005。
Anthony Y. Fu, Wan Zhang, Xiaotie Deng, Liu Wenyin. 防止 Unicode 攻击:UC-SimList 的生成和应用。万维网 2006。