如何从$allowed
数组中准备伪造preg_match扩展主题字符串?目标是使用扩展名不在允许的数组中的文件名。我尝试了一些技巧,如UTF8编码和新线路注入,但无法实现任务目标。谢谢你,对不起我的英语如何提取文件扩展名并根据允许的扩展名数组进行检查?
$allowed = array('tst', 'dll');
$filename = basename($test);
if (preg_match('#\.(.+)$#', $filename, $matches) && isset($matches[1]) && !in_array($matches[1], $allowed))
die("Extension not allowed!");
echo $ext;
如果你有权访问这些文件,你可以使用'FileInfo'来检查他们的MIME类型(http://php.net/manual/en/ref.fileinfo.php)。如果不是或者那不是你的目标 - 你可以简单地使用:'$ ext = last(explode(“。”,$ filename))'。 –
在大多数情况下,您需要检查文件类型,而不是文件扩展名。 –