toxygene/confusables

此库实现了Unicode安全机制技术标准中混淆检测部分所描述的骨架函数。

0.7 2018-03-02 03:27 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:21:05 UTC


README

此库实现了Unicode安全机制技术标准中混淆检测部分所描述的骨架函数。

由于Unicode包含如此大量的字符,并融合了世界各地的各种书写系统,错误的用法可能会使程序或系统受到可能的攻击。

- http://unicode.org/reports/tr39/

描述

骨架函数将复杂的Unicode图形符号分解成一个字符串,用于检测其他字符串是否在视觉上相似(即混淆)。

用法

(重新)构建类文件

混淆类文件由bin/build-confusables生成。该构建脚本将在安装/更新时自动由composer调用。

动态构建类文件的原因有两个

  • 混淆.txt文件相当大(约120k)。本地缓存它们是一种改进,但仍需要磁盘读取和解析。
  • 将混淆规则注入PHP文件中,可以将其存储在PHP字节码缓存中。

如果Unicode混淆.txt文件被更新,开发者可以随时重新运行构建脚本,甚至可以通过cronjob。

API

skeleton(string $a): string

创建字符串的骨架

将此值存储在数据库中将为开发者提供一种方法,用于对现有标识符进行视觉唯一性检查。

isConfusable(string $a, string $b): bool

检查两个字符串是否互相混淆。

在内部,这是通过skeleton(A) == skeleton(B)实现的。

警告

大小写折叠不是骨架算法的一部分。如果您的应用程序的要求包括大小写折叠标识符,那么您有责任向骨架函数提供正确的大小写字符串。