1. 程式人生 > >Laravel 5.5 CSRF

Laravel 5.5 CSRF

CSRF

// CSRF(跨站請求偽造)是一種通過偽裝授權使用者的請求來攻擊授信網站的惡意漏洞。

{{ csrf_field() }}

<input type="hidden" name="_token" value="{{ csrf_token() }}">

{{ method_field('PUT') }}

<input type="hidden" name="_method" value="PUT">

// 排除指定 URL 不做 CSRF 安全校驗

    某些路由可能不需要經過csrf驗證,例如,如果你使用了第三方支付系統(如支付寶或微信支付)來處理支付並用到他們提供的回撥功能,這時候就需要從 Laravel 的 CSRF 保護中介軟體中排除回撥處理器路由,因為第三方支付系統並不知道要傳什麼 token 值給我們定義的路由。取消的方法是在 app/Http/Middleware/VerifyCsrfToken 中的$except 新增這些路由

<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * 從 CSRF 驗證中排除的 URL
     *
     * @var array
     */
    protected $except = [
        'alipay/*',
    ];
}

// X-CSRF-Token

<meta name="csrf-token" content="{{ csrf_token() }}">

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});