如何從$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))'。 –
在大多數情況下,您需要檢查文件類型,而不是文件擴展名。 –