Laravle cung cấp CSRF Protection để gúp hệ thống bảo mật, an toàn hơn trước các cuộc tần công cross-site (Các bạn có thể tìm hiểu cách thức tấn công này trên google nhé).
Hoặc hiểu sơ qua ví dụ trên Doc: https://laravel.com/docs/10.x/csrf
Ví dụ hệ thống của bạn có route ‘user/email’ – đại khái thì route này làm nhiệm vụ change email của người dùng (Với phương thức POST chẳng hạn)
Người dùng đang ở trạng thái đăng nhập trên hệ thống của bạn.
Lúc này, giả sử Hackers nó có một site giả mạo nào (Ví dụ nó lừa người vào trang web abc.com nào đó rồi điền email trúng thưởng chẳng hạn)
Lúc này nó sẽ hướng request về route ‘user/email’ trên hệ thống của bạn và khiến email của bạn bị thay đổi.
Vậy nên Laravel cung cấp cơ chế CSRF protection (với các method POST, PUT, PATCH, DELETE) để ngăn chặn các cuộc tấn công cross-site như vậy.
Trong các form html thì bạn luôn luôn nhớ thêm @csrf, ví dụ
<form method="POST" action="/profile">
@csrf
<!-- Equivalent to... -->
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
</form>Bản thân với mỗi session của user luôn có một token, nó được dùng để chứng thực người dùng. Bạn có thể gọi ra như sau
use Illuminate\Http\Request;
Route::get('/token', function (Request $request) {
$token = $request->session()->token();
$token = csrf_token();
// ...
});Oke, kiến thức này chỉ tới đây là đủ. Chúng ta sẽ bàn sâu hơn khi đi vào dự án cụ thể các bạn nhé.
Next one, hẹn gặp lại tại bài học: Controller 🙂