Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

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.

Trả lời

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 *