laravel 对读请求加 csrf-token 验证

1、laravel 默认是不对 对于重要的读请求进行 csrf-token 验证的,但是对于对于一些重要的读方法,也可以添加保护。

    protected function isReading($request)
    {
        return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']);
    }

2、对读请求加 csrf-token 验证

(1)namespace Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;

       /*修改方法*/

public function handle($request, Closure $next)
{
    if ($this->isReading() && $this->mustVerifyCsrfToken($request)) {
        if (!$this->tokensMatch()) {
            throw new TokenMismatchException;
        }
    }

    if (
        $this->isReading($request) ||
        $this->runningUnitTests() ||
        $this->shouldPassThrough($request) ||
        $this->tokensMatch($request)
    ) {
        return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}

       /* 添加方法 */

protected function mustVerifyCsrfToken($request)
{
    foreach ($this->mustVerify as $must) {
        if ($must !== '/') {
            $must = trim($must, '/');
        }

        if ($request->is($must)) {
            return true;
        }
    }

    return false;
}

(2)namespace WebGroup\Http\Middleware\VerifyCsrfToken;

       修改类,添加 $mustVerify 属性

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
    ];

    /**
     * The URIs with reading method (['HEAD', 'GET', 'OPTIONS']) that must pass CSRF verification.
     *
     * @var array
     */
    protected $mustVerify = [
        //
    ];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值