Tokens rất hữu ích để cung cấp một số mức độ bảo vệ khỏi các cuộc tấn công CSRF và chúng cũng hữu ích cho việc thực thi giới hạn về việc gửi biểu mẫu.
Hoặc đơn giản, có thể được sử dụng để ngăn người khác vô tình gửi cùng một biểu mẫu hai lần bằng cách nhấp vào nút gửi hai lần.
Ví dụ: Bạn đang thực hiện chuyển khoản trực tuyến trên trang web của ngân hàng $ 10 từ tài khoản A sang tài khoản B. Khi màn hình "chuyển tiền" xuất hiện, trong nền là mã thông báo duy nhất. Bạn nhập vào/từ tài khoản và số tiền và nhấn nút gửi, và sau đó nhấn nó một lần nữa do tai nạn trước khi trang tiếp theo tải.
Trình duyệt của bạn gửi HTTP POST hai lần. Đối với yêu cầu đầu tiên, máy chủ nhận được mã thông báo, xác nhận rằng nó hợp lệ, sau đó xóa hoặc đánh dấu nó là không hợp lệ. Đối với yêu cầu thứ hai, máy chủ phát hiện rằng mã thông báo (cùng) không còn giá trị và không xử lý quá trình chuyển. Nếu nó không làm như vậy, bạn sẽ chỉ cần chuyển $ 20 thay vì $ 10.
Một cách để suy nghĩ về nó là khi bạn tải một biểu mẫu bạn nhận được một mã thông báo đặc biệt cho trường hợp đó của biểu mẫu bạn vừa tải. Nếu bạn muốn gửi, hãy sử dụng mã thông báo. Một khi bạn sử dụng mã thông báo nó đã biến mất. Bạn muốn có mã thông báo khác? Tải lại trang/biểu mẫu để nhận một trang khác.
Lưu ý: có nhiều cách để sử dụng JavaScript để tránh nhấp chuột vào nút trùng lặp, cũng nên được sử dụng, nhưng điều này không giúp ích nếu có yêu cầu HTTP trùng lặp vì một số lý do khác (lỗi trình duyệt, vấn đề phần cứng) v.v.) Thẻ phải được sử dụng cho bất kỳ giao dịch nào dẫn đến thay đổi dữ liệu hoặc sử dụng tài nguyên (như in) và không được sao chép một cách vô tình.
cảm ơn bạn.Trang này nói rõ ràng về phương thức mã thông báo này: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet –