PHP Conference Japan 2024

Spoofchecker 類別

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

簡介

提供這個類別是因為 Unicode 包含大量的字元,並且包含了世界上各種不同的書寫系統,它們的不正確使用可能會使程式或系統遭受利用字元相似性的安全攻擊。

提供的方法允許檢查單個字串是否可能是試圖混淆讀者(`欺騙檢測`),例如使用西里爾字母 'а' 拼寫的 "pаypаl"。

類別概要

類別 Spoofchecker {
/* 常數 */
公開 常數 整數 ANY_CASE
公開 常數 整數 SINGLE_SCRIPT
公開 常數 整數 INVISIBLE
公開 常數 整數 CHAR_LIMIT
公開 常數 整數 ASCII
公開 常數 整數 HIGHLY_RESTRICTIVE
公開 常數 整數 MINIMALLY_RESTRICTIVE
公開 常數 整數 UNRESTRICTIVE
公開 常數 整數 MIXED_NUMBERS
公開 常數 整數 HIDDEN_OVERLAY
/* 方法 */
公開 __construct()
公開 areConfusable(字串 $string1, 字串 $string2, 整數 &$errorCode = null): 布林值
公開方法 isSuspicious(字串 $string, 整數 &$errorCode = null): 布林值
公開方法 setAllowedLocales(字串 $locales):
公開方法 setChecks(整數 $checks):
公開方法 setRestrictionLevel(整數 $level):
}

目錄

新增註釋

使用者貢獻的註釋 2 則註釋

匿名
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
匿名
6 年前
當使用完整文字混淆 (WSC) 和混合文字混淆 (MSC) 檢查時,Spoofchecker 預設會產生誤判。
它們自 ICU 58 起已棄用
http://bugs.icu-project.org/trac/ticket/12549#comment:10

解決方法:將 ICU 升級到 58+ 或使用 Spoofcheckers 的 setChecks() 函式避免 MSC 和 WSC 檢查。
To Top