The overall question is: I need feedback on the security of the idea and the script. Do I need to do more in raw code, or is this ok, taking into account my other information?
Let's assume these following first:
- All images are stored on a subdomain (e.g.
images.example.com
) - The subdomain
images.example.com
does not have execute rights - The upload script is named upload.php and is located at
example.com
- I run a virus scanner on
images.example.com
every day
- All images are stored on a subdomain (e.g.
A simple upload script written in PHP:
$allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "images.example.com/" . randomName() .$_FILES["file"]["name"]); } } } else { echo "Invalid file"; }
The script is demonstrating my thoughts; nothing more.
So from what I understand now, all images uploaded cant do any harm to example.com, even if they contain
injected code
?Do I not need to do a
exif
orFileinfo
check since I put the files on a subdomain?I've assumed a lot of things. Did I miss anything?