5
我有一个网站上的用户可以上传文件到一个子目录。我正在过滤上传检查潜在的恶意代码。我对事物的安全性不熟悉,所以这看起来像是保证上传到服务器的最佳做法?如果不是,或者我错过了任何东西,你能指出我朝着正确的方向吗?这是一个上传文件的好过滤器吗?
//arrays with acceptable file extensions/types -- default validations set to false
$acceptable_ext = array('jpg', 'JPG', 'jpeg', 'JPEG', 'gif', 'GIF', 'png', 'PNG');
$acceptable_type = array('image/jpeg', 'image/gif', 'image/png');
$validated_ext = 0;
$validated_type = 0;
//validate file extension and type
if($_FILES && $_FILES['file']['name']) {
$file_info = pathinfo($_FILES['file']['name']);
//validate extension
for ($x=0; $x < count($acceptable_ext); $x++) {
if($file_info['extension'] == $acceptable_ext[$x]) {
$validated_ext = 1;
}
}
//validate type
for ($x=0; $x < count($acceptable_type); $x++) {
if($file_info['type'] == $acceptable_type[$x]) {
$validated_type = 1;
}
}
}
if($validated_ext && $validated_type) {
//upload file to the server blah blah
}
看起来不错,但为什么2 for循环?你不能在第一个循环中运行这两项检查吗? – NSjonas
数组有两种不同的长度 – Hat
@flapjacks:'if(in_array($ file_info ['type'],$ acceptable_type))'......只是说......你不需要任何一个循环。 :) – cHao