PHP欺骗检测类

4
我正在阅读PHP手册,发现在intl扩展文档页面中有一个名为Spoofchecker。目前该类的方法、参数以及类本身都没有很详细的文档说明,因此我想知道它的用途是什么。

2
Java文档中的SpoofChecker可能会有所帮助(基本上是用于区分http://www.google.com和http://www.goog1e.com或类似网址,以防钓鱼攻击)。 - Mark Baker
2个回答

5
该类正在调用ICU'库,因此您可能会发现更多详细信息。他们说

由于Unicode包含如此众多的字符并且涵盖了世界上各种书写系统,因此不正确的使用可能会使程序或系统面临可能的安全攻击。本文档指定了可用于检测可能安全问题的机制。

以下是我使用Spoofchecker类的简短示例代码。我自己尚未在实际网站中使用过它,但我认为当您需要从用户输入的URL生成和显示外部链接时,它可能会很有用。如果恶意人员试图将其他访问者带到Google、Paypal、URL缩短器等虚假网站,您可以取消链接或拒绝其提交。
if(!extension_loaded('intl') || !class_exists("Spoofchecker")) {
    exit ('turn on php_intl extension first');
}

$checker = new Spoofchecker();

// false: all letters are in ASCII
var_dump($checker->isSuspicious("goog1e.com"));
// true: the first Cyrillic letter is from different set
var_dump($checker->isSuspicious("Рaypal.com"));

// true: digit one instead of small L
var_dump(
    $checker->areConfusable(
        'google.com',
        'goog1e.com'
    )
);

// false: digit zero and small O are not confusable
var_dump(
    $checker->areConfusable(
        'google.com',
        'g00g1e.com'
    )
);

// true: Cyrillic letter instead of P
var_dump(
    $checker->areConfusable(
        'Рaypal.com',
        'Paypal.com'
    )
);

// true: Japanese Katakana and Hiragana 'he'
var_dump(
    $checker->areConfusable(
        'ヘいせい.com',
        'ヘいせい.com'
    )
);

// true: identical detected as confusable so you might check === first
var_dump(
    $checker->areConfusable(
        'google.com',
        'google.com'
    )
);

您可以在此表格上查看哪些字符被认为是易混淆的。

0
根据马克·贝克的评论,SpoofChecker是一种PHP机制,用于在使用Unicode字符串时检测可能存在的安全问题。
由于Unicode包含如此众多的字符并融合了世界各地的不同书写系统,不正确的使用可能会使程序或系统面临潜在的安全攻击。
来源:http://www.unicode.org/reports/tr39/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接