我正在阅读 PHP 手册,并在intl 扩展文档页面中遇到了Spoofchecker
该类。类中的方法、它们的参数以及类本身现在都没有记录,所以我想知道它的目的是什么。
问问题
529 次
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'
)
);
您可以检查此表上哪些字符被认为是易混淆的。
于 2013-07-04T00:41:54.573 回答
0
正如 Mark Baker 的评论所指出的,SpoofChecker 是一种 PHP 机制,用于在处理 Unicode 字符串时检测可能的安全问题。
由于 Unicode 包含如此大量的字符并包含世界上各种不同的书写系统,因此不正确的使用可能会使程序或系统受到可能的安全攻击。
于 2013-07-04T00:34:09.607 回答