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]); |