Cross-site request forgery: tấn công giả mạo request website.
Ngăn chặn CSRF Request:
Laravel tự động sinh ra 1 CSRF token cho mỗi session. Token được sử dụng để xác minh user có thực sự tạo ra request đó không. Khi token được lưu ở user session và thay đổi mỗi một phiên mới, các ứng dụng giả mạo không thể tiếp cận nó được.
CSRF token có thể tiếp cận thông qua request session hoặc helper csrf_token:
$token = $request->session()->token();
// or
$token = csrf_token();Khi bạn define 1 form POST, PUT, PATCH, DELETE, bạn phải sử dụng hidden field CSRF _token. Trong blade sử dụng @csrf:
<form method="POST" action="/profile">
@csrf
<!-- OR -->
<input type="hidden" name="_token" value="{{ csrf_token() }}" />Middleware App\Http\Middleware\VerifyCsrfToken sẽ tự động verify token.
Loại trừ URIs từ CSRF token:
Thi thoảng bạn muốn loại trừ 1 số URIs khỏi CSRF. Ví dụ bạn sử dụng Stripe để xử lý thanh toán và sử dụng webhook, bạn cần loại trừ Stripe webhook handler route khỏi CSRF.Thông thường bạn nên đặt những route này ra khỏi web middleware group. Tuy nhiên bạn cũng có thể loại trừ những route này bằng thuộc tính $except trong VerifyCsrfToken middleware:
class VerifyCsrfToken extends Middleware
{
protected $except = [
'stripe/*',
'http://example.com/abc',
...
];
}