Я ударил немного проблемы, мне нужно очистить имя файла при загрузке, но мне нужно, чтобы он работал на нескольких языках, а не был угрозой безопасности.Php clean filename multilanguage
Так что в настоящее время я использую следующее.
$fileName = preg_replace('/[^\w\._]+/', '_', $fileName);
Это поиск для любых английских символов. Но с любыми другими языками арабский норвежский и т. Д. Персонажи лишаются.
Так что это имя файла будет
Кан fÀ Dette arbeids.mp3
выход
Kan_f_dette_arbeids.mp3
ли это быть достаточно, чтобы предотвратить хакеров?
function preventCode($str){
$special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}");
return str_replace($special_chars, '', $str);
}
$string = 'สวัสดีชาวโลก ให้ได้ บุคคลนี้เริ่มต้น <?php echo \'hello\'; ?>';
echo preventCode($string);
Что такое лучший способ справиться с этим, если я удалил preg_replace это могло вызвать угрозу безопасности с хакерами, пытающихся внедрить код с помощью файла?
Любая помощь будет оценена
Благодаря