gpt4 book ai didi

php - 在 PHP 中将 utf-8 字符列入白名单的最有效方法是什么?

转载 作者:行者123 更新时间:2023-12-04 00:31:05 26 4
gpt4 key购买 nike

我的目标是通过为从客户端收到的任何和所有 POST 数据创建严格的允许字符白名单来保护我的网站免受攻击。

留在 ASCII 字符中时,这是小菜一碟。像这样的东西:

if(preg_match('/[^aA-zZ0-9]/', $stringToTest))
{
// Battle stations!!
}

但是,我需要能够允许任何和所有 utf-8 字符,尤其是日语、中文和韩语等亚洲字符集。但我不想排除任何具有古怪字符的人,例如阿拉伯语或俄语,或其他任何人。一个世界,一份爱! ;)

我怎样才能允许人们输入他们母语的字符,同时排除邪恶脚本中使用的脏字,如 *、?、尖括号等?

最佳答案

\w 将为您提供单词字符(字母、数字和下划线),这可能是您在 \s 之后寻找空格的原因。

例如

if(preg_match('/[\w\s]/', $stringToTest))
{
// Battle stations!!
}

regular-expressions.info是这方面的极好引用 - herehere是几个相关的页面:)

编辑:需要更多说明,抱歉!

这是我通常使用的 CJK:

function get_CJK_ranges() {

return array(
"[\x{2E80}-\x{2EFF}]", # CJK Radicals Supplement
"[\x{2F00}-\x{2FDF}]", # Kangxi Radicals
"[\x{2FF0}-\x{2FFF}]", # Ideographic Description Characters
"[\x{3000}-\x{303F}]", # CJK Symbols and Punctuation
"[\x{3040}-\x{309F}]", # Hiragana
"[\x{30A0}-\x{30FF}]", # Katakana
"[\x{3100}-\x{312F}]", # Bopomofo
"[\x{3130}-\x{318F}]", # Hangul Compatibility Jamo
"[\x{3190}-\x{319F}]", # Kanbun
"[\x{31A0}-\x{31BF}]", # Bopomofo Extended
"[\x{31F0}-\x{31FF}]", # Katakana Phonetic Extensions
"[\x{3200}-\x{32FF}]", # Enclosed CJK Letters and Months
"[\x{3300}-\x{33FF}]", # CJK Compatibility
"[\x{3400}-\x{4DBF}]", # CJK Unified Ideographs Extension A
"[\x{4DC0}-\x{4DFF}]", # Yijing Hexagram Symbols
"[\x{4E00}-\x{9FFF}]", # CJK Unified Ideographs
"[\x{A000}-\x{A48F}]", # Yi Syllables
"[\x{A490}-\x{A4CF}]", # Yi Radicals
"[\x{AC00}-\x{D7AF}]", # Hangul Syllables
"[\x{F900}-\x{FAFF}]", # CJK Compatibility Ideographs
"[\x{FE30}-\x{FE4F}]", # CJK Compatibility Forms
"[\x{1D300}-\x{1D35F}]", # Tai Xuan Jing Symbols
"[\x{20000}-\x{2A6DF}]", # CJK Unified Ideographs Extension B
"[\x{2F800}-\x{2FA1F}]" # CJK Compatibility Ideographs Supplement
);

}

function contains_CJK($string) {
$regex = '/'.implode('|',get_CJK_ranges()).'/u';
return preg_match($regex,$string);
}

要获得所有可能成为转义问题和其他黑帽问题的东西,请使用:

/[^\p{标点符号}]/ ( == /[^\p{P}]/ )

/[^\32-\151]/ ( == /[^!-~]/ )

another good link

关于php - 在 PHP 中将 utf-8 字符列入白名单的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5074161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com