【问题标题】:PHP Spoofchecker classPHP Spoofchecker 类
【发布时间】:2013-07-01 18:51:15
【问题描述】:

我正在阅读 PHP 手册,并在 intl extension 文档页面中看到了 Spoofchecker class。类中的方法、它们的参数以及类本身现在都没有记录,所以我想知道它的目的是什么。

【问题讨论】:

标签: php localization internationalization intl


【解决方案1】:

正如 Mark Ba​​ker 的评论所指出的,SpoofChecker 是一种 PHP 机制,用于检测处理 Unicode 字符串时可能出现的安全问题。

由于 Unicode 包含如此大量的字符并包含世界上各种不同的书写系统,因此错误的使用可能会使程序或系统面临可能的安全攻击。

来源:http://www.unicode.org/reports/tr39/

【讨论】:

    【解决方案2】:

    该课程正在调用ICU' library,因此您可以找到更多详细信息。有they say,

    因为 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'
        )
    );
    

    您可以检查this table 上哪些字符被认为是易混淆的。

    【讨论】:

      猜你喜欢
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2016-06-30
      • 2010-11-12
      • 2011-01-28
      • 2013-01-01
      相关资源
      最近更新 更多