探索者的博客
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/');

插入代码结束

评论区

评论者头像

张三

2025-06-16

非常实用的文章,我学到了很多关于前端性能优化的知识。特别是缓存策略部分,对我帮助很大。

评论者头像

李四

2025-06-15

代码分割确实是提高前端性能的重要手段,请问作者有没有实际项目中遇到的代码分割最佳实践可以分享?

作者头像
探索者 作者
2025-06-16

感谢提问!在实际项目中,我通常会根据路由、组件和第三方库进行代码分割。对于大型组件库,可以考虑使用动态导入来实现按需加载。