toxygene / confusables
此库实现了Unicode安全机制技术标准中混淆检测部分所描述的骨架函数。
0.7
2018-03-02 03:27 UTC
Requires
- php: >=7.0.0
- nikic/php-parser: ^3.1
- symfony/polyfill-mbstring: ^1.7
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.10
- phpunit/phpunit: ^7.0
This package is not auto-updated.
Last update: 2024-09-29 05:21:05 UTC
README
此库实现了Unicode安全机制技术标准中混淆检测部分所描述的骨架函数。
由于Unicode包含如此大量的字符,并融合了世界各地的各种书写系统,错误的用法可能会使程序或系统受到可能的攻击。
描述
骨架
函数将复杂的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)
实现的。
警告
大小写折叠不是骨架
算法的一部分。如果您的应用程序的要求包括大小写折叠标识符,那么您有责任向骨架
函数提供正确的大小写字符串。