上传文件安全验证参考写法

      发布在:后端技术      评论:0 条评论

上传文件安全验证,实现了对伪装图片进行验证,摘抄自讯睿cms框架

// 安全验证
private function _safe_check($file_ext, $data) {

// 检查系统保留文件格式
   if (in_array($file_ext, $this->notallowed)) {
return dr_return_data(0, $this->error['ERROR_SYSTEM_TYPE_NOT_ALLOWED']);
} elseif (!$file_ext) {
return dr_return_data(0, dr_lang('无法读取文件扩展名'));
}

// 验证扩展名格式
   if (!preg_match('/^[a-z0-9]+$/i', $file_ext)) {
return dr_return_data(0, dr_lang('此文件扩展名[%s]不安全,禁止上传', $file_ext));
}

// 验证伪装图片
   if (in_array($file_ext, ['jpg', 'jpeg', 'png', 'gif'])) {
$data = strtolower($data);
if (strpos($data, '<?php') !== false) {
return dr_return_data(0, dr_lang('此文件不安全,禁止上传'));
} elseif (strpos($data, 'eval(') !== false) {
return dr_return_data(0, dr_lang('此文件不安全,禁止上传'));
} elseif (strpos($data, '.php') !== false) {
return dr_return_data(0, dr_lang('此文件不安全,禁止上传'));
} elseif (strpos($data, 'base64_decode(') !== false) {
return dr_return_data(0, dr_lang('此文件不安全,禁止上传'));
}
}

return dr_return_data(1, 'ok');
}


相关文章
热门推荐