2024年PHP日本大会

Spoofchecker 类

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

简介

提供此类是因为Unicode包含大量字符,并包含世界各地的各种书写系统,其不正确的使用可能会使程序或系统面临使用字符相似性的潜在安全攻击。

提供的方法允许检查单个字符串是否可能是混淆读者(欺骗检测)的尝试,例如用西里尔字母“а”拼写的“pаypаl”。

类概要

class Spoofchecker {
/* 常量 */
public const int ANY_CASE;
public const int SINGLE_SCRIPT;
public const int INVISIBLE;
public const int CHAR_LIMIT;
public const int ASCII;
public const int HIGHLY_RESTRICTIVE;
public const int UNRESTRICTIVE;
public const int MIXED_NUMBERS;
public const int HIDDEN_OVERLAY;
/* 方法 */
public __construct()
public areConfusable(string $string1, string $string2, int &$errorCode = null): bool
public isSuspicious(string $string, int &$errorCode = null): bool
public setAllowedLocales(string $locales): void
public setChecks(int $checks): void
public setRestrictionLevel(int $level): void
}

目录

添加注释

用户贡献的注释 2 条注释

3
匿名用户
7 年前
来自 http://icu-project.org/apiref/icu4j/com/ibm/icu/text/SpoofChecker.html
SINGLE_SCRIPT_CONFUSABLE:表示两个字符串在视觉上可能混淆,并且它们来自相同的脚本
MIXED_SCRIPT_CONFUSABLE:表示两个字符串在视觉上可能混淆,并且它们不是来自相同的脚本
WHOLE_SCRIPT_CONFUSABLE:表示两个字符串在视觉上可能混淆,并且它们不是来自相同的脚本,但它们都是单脚本字符串
ANY_CASE:已弃用。
SINGLE_SCRIPT:已弃用。
INVISIBLE:检查标识符中是否存在不可见字符,例如零宽度空格,或可能不会显示的字符序列,例如相同非间隔标记的多次出现。
CHAR_LIMIT:检查标识符是否仅包含指定的一组可接受字符。

UTS 39 第 4 节中对整个脚本、混合脚本和单脚本混淆的解释:http://unicode.org/reports/tr39/#Confusable_Detection

来自 Java SpoofChecker 类的详细信息:http://icu-project.org/apiref/icu4j/com/ibm/icu/text/SpoofChecker.html
-1
匿名用户
6 年前
当使用整个脚本混淆 (WSC) 和混合脚本混淆 (MSC) 检查时,Spoofchecker 默认情况下会产生误报。
自 ICU 58 起已弃用
http://bugs.icu-project.org/trac/ticket/12549#comment:10

解决方法:将 ICU 升级到 58+,或使用 Spoofcheckers 的 setChecks() 函数避免 MSC 和 WSC 检查。
To Top