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

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

Laravel 静态文件过滤中间件

<?php


namespace App\Http\Middleware;

use Closure;

class StaticResourceInterceptor
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // 获取请求的路径
        $path = $request->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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值