在当今的技术世界中,反欺诈系统正在使用越来越复杂的方法来检测欺诈活动。系统中安装的字体是识别用户和分析其设备的重要参数之一。让我们来看看反欺诈系统如何使用字体、字体在设备识别中的作用、欺骗技术和伪造检测方法。 ###### 字体在浏览器中的历史和作用 设备使用的字体是影响网页显示的关键特征。浏览器通过 CSS 和 JavaScript API 提供有关可用字体的信息,使网站能够根据用户的系统定制显示内容。在反欺诈系统中,由于安装的字体集会因设备、操作系统、版本和安装的应用程序不同而有很大差异,因此要使用字体来实现唯一性。 ###### 获取字体数据的方法 1. **CSS 字库回退**。 使用字体样式来确定是否使用指定字体显示文本。如果浏览器不支持该字体,则使用默认字体。 2. **画布指纹**。 使用 CanvasRenderingContext2D API 渲染文本并测量其尺寸,以确定是否存在字体。这是创建设备 “指纹 ”的常用方法。 3. 支持字体的 **CSS 查询**。 使用 [@font-face](#) 和 CSS 属性,可以检查字体是否可用。 4. **基于 JavaScript 的字体枚举**。 JavaScript 可以通过测量使用不同字体的文本的宽度和高度来检查字体是否可用。 ###### antiface 中如何使用字体 1. **用户唯一化** 安装的字体会因操作系统、安装的软件和用户设置的不同而不同。这就形成了设备的唯一 “指纹”。 2. **假冒检测** 如果欺诈者使用反检测浏览器,可用字体集可能与用户代理中声明的平台不一致。 3. **与其他参数比较** 例如,反欺诈系统可根据 Canvas 或 WebGL 数据检查可用字体集,以发现不一致之处。 ###### 字体欺骗及其检测方法 1. **字体集仿真或欺骗** 攻击者可以使用软件更改可用字体列表。不过,可以通过分析渲染文本的大小或其他 API 的行为来检测此类替换。 2. **字体屏蔽** 某些浏览器或插件可能会隐藏字体列表,以增加识别难度。但这种尝试也会产生可疑的模式。 3. **替换检测*** 反欺诈系统利用字体集与其他系统特征(如平台或处理器架构)之间的关联。 让我们举例说明系统如何获取字体信息。让我们打开页面 browserleaks.com/fonts  在 “字体度量:指纹 ”下,网站显示了我们在浏览器中发现的所有字体度量的 MD5 哈希值。该网站发现了 146 种字体,其中 112 种包含唯一尺寸。In the Report section, we can see the size, width and height of the checked string with characters “mmmMMMMMMMMMMMMmmmlllllmmmLLL₹▁₺₸ẞॿmmmiiimmmIIImmmwwwmmmWWW” for each of the fonts. 该网站会检查 1 400 多种已知字体,并在用户的浏览器中进行搜索。在 “Unicode Glyphs:Fingerprints ”部分,网站显示了根据 Unicode 特殊字符的渲染结果得出的 MD5 哈希值。下面是不同字体系列中每个被检查字符大小的详细信息。 让我们看看在测试页面 test-webapi.tech/glyph上检索字体的示例,在 Chrome 浏览器中打开页面并等待测试结果:  该页面会为每种字体绘制大量字符和符号,并为检测到的每种字体生成一个 MD5 哈希值,然后根据所有字体的哈希值和用户浏览器中找到的字体数量生成一个总的 MD5 哈希值。此外,在示例页面上还提供了检测用户系统和浏览器的测试变体,其中包括估算某些字体的 MD5 哈希值。在我们的示例中,网站检测到的字体不是 146 种,而是 227 种,并确定我们使用的是 Windows 操作系统和带有 Chromium 引擎的浏览器。 让我们在没有字体替换的反检测浏览器中重复测试:  结果,我们得到了与真实浏览器不同的 MD5 哈希值、更少的字体,网站将我们的系统识别为 Windows Server 和使用 Chromium 引擎的浏览器。让我们尝试交换反检测浏览器中的字体集,然后重复测试:  在这个测试中,反检测浏览器替换了一组字体,字体数量与原 Chrome 浏览器相同,但整体 MD5 哈希值与原浏览器不同,这意味着某些字体的音节大小不同。这样,我们就可以通过字体集及其指标来准确识别用户了。 让我们尝试在 Firefox 浏览器中打开我们的网页:  我们的测试页面从字体字形识别出我们使用的是 Firefox 浏览器。请注意,Firefox 浏览器中 Arial 字体的字符大小与 Chrome 浏览器中相同字体的字符大小不同。 让我们在移动设备上重复测试:  请注意,Chrome 浏览器的大多数字体都返回相同的值。还要注意的是,在相同的设备和相同版本的浏览器上,字体渲染是不同的,这让我们可以非常准确地识别独特的访问者,尤其是使用我们在之前的文章中提到的附加数据。 让我们尝试使用移动设备配置文件测试反检测浏览器:  测试结果显示,反检测浏览器添加的字体与移动设备字体一致,但某些字体的度量值与桌面版浏览器一致。该网站已确定我们使用的是 Windows Server,这与安卓移动设备完全不匹配。 这也是反欺诈系统获取浏览器系统字体信息的方式。让我们看看 Chrome 浏览器和 Firefox 浏览器在台式机和移动设备上的示例: **桌面Chrome**  **火狐浏览器桌面**  **安卓浏览器**  **安卓火狐浏览器**  通过这项测试,我们可以看到浏览器系统的字体家族和字体大小在不同设备的不同浏览器上是不同的。这就是网站如何确定所用设备和浏览器引擎类型的方法。 ###### 结论 浏览器字体是反欺诈系统的有力工具。它们可用于创建设备的独特 “指纹 ”并检测欺诈活动。结合 Canvas 和 WebGL 等其他参数对字体进行分析,可使反欺诈系统的算法更加可靠。 *Bannykh M.V.*