Laravel là framework lớn nên nó hỗ trợ khá nhiều các phương thức bảo mật an toàn cho ứng dụng web của bạn. Một trong số đó là CSRF. Khi bạn tạo 1 form và submit ngay lập tức bạn sẽ gặp 1 lỗi đó là “419 Page Expired“. Đó là bạn chưa có token CSRF ở trong Laravel Form
CSRF là gì?
CSRF là viết tắt của “Cross-Site Request Forgery”, là kỹ thuật tấn công giả mạo chính chủ thể của nó. CSRF nói đến việc tấn công vào chứng thực request trên web thông qua việc sử dụng Cookies. Dựa vào đây, hacker sẽ tạo ra các request mạo danh người sử dụng nhằm đánh lừa các website, từ đó chiếm thông tin riêng tư của chủ thể.
Sử dụng CSRF trong Laravel Form
Để tránh lỗi 419 Page Expired và tăng cường bảo mật cho form trên Laravel bạn cần thêm token vào như sau:
<form method="POST" action="https://vinasupport.com/profile"> @csrf ... </form>
Hoặc
<form method="POST" action="https://vinasupport.com/profile"> ... <input type="hidden" name="_token" value="{{ csrf_token() }}" /> ... </form>
Bạn có thể lấy token ở trong Laravel Session
use Illuminate\Http\Request; Route::get('/token', function (Request $request) { $token = $request->session()->token(); $token = csrf_token(); // ... });
Sử dụng CSRF trong Jquery / Javascript
Đê sử dụng CSRF trên request được tạo bằng JS, chúng ta sử dụng header là: X-CSRF-TOKEN
Bạn có thể thêm chúng ở file Meta
<meta name="csrf-token" content="{{ csrf_token() }}">
Hoặc đặt trong code js như sau:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
Như vậy là bạn đã tạo thêm 1 lớp bảo vệ cho website của bạn rồi đó.
Nguồn: vinasupport.com