Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Sử dụng CSRF fix lỗi “419 PAGE EXPIRED” trên Laravel - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

Laravel là một framework mạnh mẽ, điều này đồng nghĩa với việc nó cung cấp nhiều cơ chế bảo mật mạnh mẽ cho ứng dụng web của bạn. Một trong những cơ chế đó là CSRF (Cross-Site Request Forgery). CSRF là một kỹ thuật tấn công thường xuyên xảy ra trên web, và Laravel đã tích hợp một cách mạnh mẽ để ngăn chặn nó.

Khi bạn tạo một biểu mẫu trong Laravel và gửi nó đi, bạn có thể gặp phải lỗi “419 Page Expired”. Nguyên nhân của lỗi này là bạn chưa bao gồm token CSRF trong biểu mẫu Laravel. Token CSRF là một dãy ký tự ngẫu nhiên, được sinh ra để đảm bảo tính toàn vẹn và bảo mật của các yêu cầu POST và PUT trong Laravel.

Để khắc phục lỗi “419 Page Expired”, bạn chỉ cần bao gồm token CSRF trong biểu mẫu của mình. Laravel sẽ tạo ra và quản lý token này tự động cho bạn, vì vậy bạn chỉ cần đảm bảo rằng bạn đã bao gồm mã token này trong biểu mẫu của mình.

CSRF là gì?

CSRF là viết tắt của “Cross-Site Request Forgery,” đây là một kỹ thuật tấn công mạo danh. CSRF liên quan đến việc tấn công trên web bằng cách sử dụng Cookies. Hacker sẽ tạo các yêu cầu giả mạo, giả vờ như là người dùng thực sự, để đánh lừa các trang web. Mục tiêu là thu thập thông tin riêng tư của người dùng.

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 IlluminateHttpRequest;
 
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')
    }
});

Vậy là bạn đã tạo một tầng bảo vệ bổ sung cho trang web của bạn.

Để lại một bình luậ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 *