我试图编写上传脚本,只接受上传的PNG图像。上传脚本工作正常,但是当我添加png图像检测时,它会中断。PHP上传文件过滤
这是我如何把它设置了:
if ($_FILES) {
if ($_FILES["file"]["type"] == "image/png") {
$target_path = "uploads/";
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename($_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
} else { echo "Not A PNG…";
}
}
当我上传PNG图像,我得到“不是PNG”错误 - 任何想法?
你确定它的PNG图像,只有png格式的扩展而不是其他格式? – BartekR 2012-01-07 22:47:51
是的,我查过了。 – Thomas 2012-01-07 22:54:16
我意识到问题是由于名称错误而导致缺少这种功能,但值得一提的是其他人已经提到,那里提供的字符串不可信。这是绝对正确的,由于您没有检查关于该文件的其他任何信息,因此可以轻松地绕过此检查以允许将任意代码(或其他任何内容)上传到您的系统。我建议采取其他措施来确保此上传脚本的安全,否则在不久的将来可能会出现安全问题。 – 2012-01-08 00:00:54