rin*_*t.6 4 php localization internationalization intl
我正在阅读PHP手册,并在intl扩展文档页面中遇到了这个Spoofchecker类.类中的方法,它们的参数以及类本身都是公平的,所以我想知道它的目的是什么.
该课程正在调用ICU的库,以便您可以找到更多详细信息.在那里他们说,
由于Unicode包含如此大量的字符并且包含了世界上不同的编写系统,因此不正确的使用会使程序或系统暴露于可能的安全攻击.本文档指定了可用于检测可能的安全问题的机制.
这是我使用Spoofchecker类的简短示例代码.我自己还没有将它用于真实网站,但我认为当你需要从用户输入生成和显示来自URL的外部链接时,它会很有用.如果恶意的人试图将其他访问者带到虚假网站而不是谷歌,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'
)
);
Run Code Online (Sandbox Code Playgroud)
您可以在此表中查看哪些字符被认为是可混淆的.