2011-05-31 106 views
6

有我的網站的一部分,允許用戶上傳個人資料照片。我擔心人們上傳惡意代碼。我打算限制的文件類型,以JPG格式/巴紐/ .gif注意/ JPEG格式惡意代碼通過圖片上傳

我擔心,這將是不夠的。我將在服務器上調整圖片大小。調整照片大小的過程是否足以確保圖像實際上是圖像而不是惡意文件?

我將使用以下來調整照片。我不會將原件存儲在服務器上,文件名稱將會更改。

imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

    imagejpeg($thumb, $fullpath, 90); 

回答

9

簡單地做這將確保您在圖像上工作:

if (getimagesize($sourcePath) === false) 
{ 
    die("Not an image !"); 
} 

更多的安全,你應該在上傳文件夾中禁用PHP執行。 .htaccess:

php_value engine off 
+0

也許某個新來PHP的人發現了這篇文章,你應該把'panic'改成'die',以防他們直接複製並粘貼這段代碼! – fire 2011-05-31 09:55:41

+0

我甚至沒有考慮禁用PHP執行。謝謝。 – 2011-05-31 17:26:19

-1

這是一個非問題,因爲我沒有看到它是如何發生的。 不過,我不知道您的AHT功能並(您沒有發佈源代碼)。

只要我知道,這是不可能的注入PHP。你可以注入SQL,使用Javascript,HTML,...

+1

如果網站沒有做適當的驗證,你可以上傳一個php文件。 – 2011-05-31 09:44:43

+1

當然這是一個問題!即使你不能注入PHP(你也可以,但是網站必須編碼非常非常好,因爲php注入工作在文件上傳形式)。 – 2011-05-31 09:50:07

+0

你自己回答了你的問題:「我打算將文件類型限制爲JPG,PNG等。」沒有什麼可做的了。只要你的網絡服務器不像PHP那樣執行JPG文件,就沒有問題。 – tiktak 2012-03-29 13:37:01