Danh sách Tutorial

Sử dụng CSRF fix lỗi “419 PAGE EXPIRED” trên Laravel


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

SHARE

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web