1
我一直在尋找好的劇本/教程安全圖片上傳,但無論我發現,閱讀評論有在安全方面似乎是腳本的問題。所以我試圖編寫我的腳本。我想就此提出任何安全建議。
//create arrays from allowed extensions and types
$allowed_exts = array("jpg", "jpeg", "png", "gif");
$allowed_types = array("image/jpeg", "image/png", "image/gif");
//extract extension from uploaded file
$ext = strtolower(substr($_FILES["image"]["name"], strrpos($_FILES["image"]["name"], ".") + 1));
予先檢查是否擴展名的允許
if(in_array($ext, $allowed_exts) === false){
echo "Only .jpg, .png, .gif allowed";
}
一個然後檢查如果類型是允許的
elseif(in_array($_FILES["image"]["type"], $allowed_types) === false){
echo "Only .jpg, .png, .gif allowed";
}
一個然後檢查文件大小
elseif($_FILES["image"]["size"] > 2100000){
echo "File is too big";
}
現在使用和getimagesizeŧ Ø檢查尺寸
elseif(!getimagesize($_FILES["image"]["tmp_name"])){
echo "File is not an image";
} else {
我創建一個隨機文件名
$filename = mt_rand(1000,99999)."_".$_POST['p_id'].".jpg";
如果這一切很好,我創建一個使用GD拇指。在短(櫃面它是一個JPEG):
a. imagecreatefromjpeg -> from uploaded file
b. imagecreatetruecolor -> with desired thumbnail dimensions
c. imagecopyresampled -> modify the image created under a.
d. imagejpeg -> save image to destination
所以,我讀過這應該消除附帶圖像的大部分問題,但我敢肯定,我錯過了一些重要的東西。
我把文件寫入的目錄有755權限,但是我想我必須通過在文件夾中放置一個.htaccess來對目錄做更多限制?那裏應該有什麼?
可能重複http://stackoverflow.com/questions/11061355/security -threats-with-uploads)和[由PHP上傳的文件類型檢查](http://stackoverflow.com/questions/6755192/uploaded-file-type-check-by-php) – deceze
我讀過很多這類帖子,但他們都沒有給我一個關於如何讓用戶安全上傳圖像的決定性答案。 – Juvlius