Làm cách nào để chuyển mã thông báo CSRF trong Ajax Javascript?
Yêu cầu giả mạo yêu cầu trên nhiều trang web (CSRF) là một loại khai thác độc hại theo đó các lệnh trái phép được thực hiện thay mặt cho người dùng được xác thực Show
CodeIgniter 4 cung cấp khả năng bảo vệ khỏi các cuộc tấn công CSRF. Nhưng nó không được bật theo mặc định giống như CodeIgniter 3 Mã thông báo được tạo cho mỗi người dùng và được CodeIgniter quản lý để xác minh yêu cầu của người dùng Trong hướng dẫn này, tôi chỉ cho bạn cách kích hoạt tính năng bảo vệ CSRF và gửi yêu cầu AJAX bằng mã thông báo CSRF trong dự án CodeIgniter 4 Demo Tải xuống nội dung
1. Cấu hình cơ sở dữ liệu
database.default.hostname = 127.0.0.1 database.default.database = testdb database.default.username = root database.default.password = database.default.DBDriver = MySQLi 2. Bật CSRF
security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true
// Always applied before every request public $globals = [ 'before' => [ //'honeypot' 'csrf', ], 'after' => [ 'toolbar', //'honeypot' ], ]; 3. Tạo bảng
database.default.hostname = 127.0.0.1 database.default.database = testdb database.default.username = root database.default.password = database.default.DBDriver = MySQLi7
security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true3
security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true4 4. Mô hình
security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true6
Mã hoàn thành security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true0 5. Tuyến đường
Mã hoàn thành security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true2 6. Bộ điều khiển
security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true4
Đọc các giá trị POST và gán vào biến security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true35. Tạo Mảng security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true34 để lưu trữ phản hồi trả về. Chỉ định mã thông báo CSRF mới cho security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true37 xác định xác thực. Nếu giá trị POST không hợp lệ thì gán security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true38 cho security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true39 và thông báo lỗi cho security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true40 Nếu giá trị hợp lệ thì gán security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true41 cho security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true39 và tìm nạp bản ghi theo tên người dùng từ bảng // Always applied before every request public $globals = [ 'before' => [ //'honeypot' 'csrf', ], 'after' => [ 'toolbar', //'honeypot' ], ];7. Chỉ định bản ghi đã tìm nạp cho security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true44 Trả lại Mảng security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true34 ở định dạng JSON Mã hoàn thành security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true0 7. XemTạo tệp security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true46 trong security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true47 Tạo một phần tử ẩn để lưu trữ tên mã thông báo CSRF được chỉ định trong tệp security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true4 trong thuộc tính security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true49 và lưu trữ hàm băm CSRF trong thuộc tính security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true60 security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true1 Thêm tên người dùng vào security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true61 bằng cách lặp trên security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true62. Lưu trữ security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true63 trong thuộc tính security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true60 Để hiển thị thông tin chi tiết về người dùng đã chọn đã tạo ____265 phần tử Kịch bản - Xác định sự kiện security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true66 trên security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true67 Đọc tên mã thông báo CSRF và hàm băm từ trường ẩn và gán nó cho security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true68 và security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true69 Chỉ định giá trị tùy chọn đã chọn cho biến security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true00 Gửi yêu cầu AJAX POST tới security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true01. Chuyển tên người dùng và hàm băm CSRF dưới dạng dữ liệu – security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true02 là security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true03 Ở đây, hàm băm sẽ trôi qua như thế nào – security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true04 Đặt security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true05. Khi gọi lại thành công, chỉ định security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true06 cho security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true07. Làm trống các phần tử security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true65 Nếu security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true09 thì lặp lại trên security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true20 để đọc dữ liệu người dùng. Cập nhật giá trị văn bản security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true65 với dữ liệu người dùng Nếu security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true22 không bằng security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true38 thì cảnh báo security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true24 Mã hoàn thành security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true2 8. Chạy
security.tokenName = 'csrf_hash_name' security.headerName = 'X-CSRF-TOKEN' security.cookieName = 'csrf_cookie_name' security.expires = 7200 security.regenerate = true3
9. Bản trình diễnXem bản trình diễn 10. Kết luậnMã thông báo CSRF không bắt buộc phải gửi với yêu cầu AJAX GET. Nếu bạn đã bật tạo mã thông báo CSRF thì bạn cần cập nhật mã thông báo sau mỗi yêu cầu như tôi làm trong ví dụ Làm cách nào để gửi mã thông báo CSRF bằng AJAX?Sử dụng mã thông báo csrf bên trong yêu cầu Ajax
. Include a jquery file in your html as we are going to make use of $. ajaxSetup() và $. ajax để thực hiện cuộc gọi ajax. Bây giờ bấm vào nút Bấm vào tôi và xem thông báo được hiển thị.
Làm cách nào để nhận mã thông báo CSRF trong JavaScript?Nếu bạn cần thực hiện một yêu cầu POST AJAX trong Laravel và bạn xem tài liệu, bạn có thể thấy giải pháp truy xuất mã thông báo CSRF trong jQuery như sau. var csrf = $('meta[name="csrf-token"]'). attr('nội dung');
{% CSRF token %} là gì?Mã thông báo CSRF là một giá trị duy nhất, bí mật, không thể đoán trước được tạo bởi ứng dụng phía máy chủ và được truyền tới máy khách theo cách nó được bao gồm trong yêu cầu HTTP tiếp theo do máy khách thực hiện
Làm cách nào để sử dụng mã thông báo CSRF trong codeigniter AJAX?Bật bảo vệ CSRF – . Đặt TRUE $config['csrf_protection'] , điều này sẽ kích hoạt CSRF Bạn có thể thay đổi giá trị mặc định của $config['csrf_token_name'] là 'csrf_test_name'. . Đặt TRUE $config['csrf_regenerate'] nếu bạn muốn tạo lại hàm băm CSRF sau mỗi yêu cầu AJAX nếu không thì đặt nó là FALSE |