ImageUpon檔案副檔名判斷修改

今天趁著空閒的時候把ImageUpon的檔案格式副檔名判斷的部份小修了一下,主要的問題在於他是直接使用上傳之後的檔名去作切割,這對於一些安全上有些疑慮,假設有人上傳改附檔檔名的檔案...Orz,優點也是可以正確的去辨識檔案

修改部份:
找到

1
$suffix = strtolower(substr($_FILES['uploadimg']['name'],-4));

改成:

1
2
3
4
5
6
$img_info = getimagesize($_FILES['uploadimg']['tmp_name']);
$mime = $img_info['mime'];
list($t, $suffix) = split('/', $mime);
if ($suffix == 'jpeg') //這個部份將JPEG檔名轉成jpg
    $suffix = 'jpg';
$suffix='.'.$suffix;//加上點這樣整體架構不用去作修改

雖然說多了很多的步驟,但是隨便拿一張圖附檔亂改,都還可以正確的去作辨識,取得應有的副檔名。

如果還是要使用上傳檔案的檔名去取得副檔名的話,我想到比較好的方式還是使用preg_match會比較正統,因為畢竟副檔名不是只有三個字

1
2
preg_match('/(.*?)[.](\w+$)/u', $_FILES['uploadimg']['name'], $regs);
$suffix = '.'.strtolower($regs[2]);

Sat Jun. 20 2009
Comments

Comments