laravel 上传后的文件如何符合安全标准

WEB应用为了满足“安全标准” - 上传文件的保存

Laravel 静态文件过滤中间件

getPathInfo();

        // 检查请求是否是静态资源
        if ($this->isStaticResource($path)) {
            // 如果是静态资源,返回自定义的响应,或根据需要执行其他操作
            if(file_exists(storage_path("app".$path))){
            	// 支持响应的静态文件类型
                $support = [
                    'png'=>'image/png',
                    'jpg'=>'image/jpeg',
                    'gif'=>'image/gif',
                    'pdf'=>'application/pdf',
                    'docx'=>'application/msword',
                ];
                $ext = pathinfo($path, PATHINFO_EXTENSION);
                if(isset($support[$ext])){
                    $headers = ['Content-Type'=> $support[$ext]];
                    return response()->file(storage_path("app".$path), $headers);
                }
            }
            return response()->json(['error' => '拒绝访问静态资源', 'path'=>$path], 403);
        }
        // 继续处理请求
        return $next($request);
    }

    /**
     * 检查是否是静态资源
     *
     * @param  string  $path
     * @return bool
     */
    protected function isStaticResource($path)
    {
        // 在这里添加检查静态资源的逻辑,可以使用正则表达式或其他方式
        // 例如,检查路径是否以.css、.js、.jpg等静态资源扩展名结尾
        $pattern = '/\.(css|js|jpg|jpeg|png|gif|ico|pdf)$/i';
        return preg_match($pattern, $path);
    }
}

你可能感兴趣的:(laravel,安全,前端)