2020-11-09 04:13:29
•
1536
php上传图片安全处理,防止图片木马
if (!function_exists('check_illegal')) { /** * 检测上传图片是否包含有非法代码 * @return mixed */ function check_illegal($image) { try { if (file_exists($image)) { $resource = fopen($image, 'rb'); $fileSize = filesize($image); fseek($resource, 0); $hexCode = fread($resource, $fileSize); fclose($resource); if (preg_match('#__HALT_COMPILER()#i', $hexCode) || preg_match('#/script>#i', $hexCode) || preg_match('#<([^?]*)\?php#i', $hexCode) || preg_match('#<\?\=#i', $hexCode)) { return false; } } } catch (\Exception $e) {} return true; } }
检测上传图片是否包含有非法代码
/*验证图片一句话木马*/ if (false === check_illegal($_FILES[$fileElementId]['tmp_name'])) { return ['errcode'=>1,'errmsg'=>'禁止上传木马图片!']; }
验证图片一句话木马
$fileName = $_FILES[$fileElementId]['name']; // 提取文件名后缀 $file_ext = pathinfo($fileName, PATHINFO_EXTENSION); // 提取出文件名,不包括扩展名 $newfileName = preg_replace('/\.([^\.]+)$/', '', $fileName); // 过滤文件名.\/的特殊字符,防止利用上传漏洞 $newfileName = preg_replace('#(\\\|\/|\.)#i', '', $newfileName); // 过滤后的新文件名 $fileName = $newfileName . '.' . $file_ext; $savePath = $path . '/' . date('Ymd/');
插入代码结束