kịch bản Vấn đề:Laravel 4: Ngăn chặn nhiều hình thức đệ trình - CSRF Mã
tôi là tạo ra một blog với Laravel 4. Các hình thức đó là chịu trách nhiệm về việc tạo ra các bài đăng trên blog mới được bảo đảm bằng việc xây dựng trong CSRF bảo vệ (Laravel Docs: CSRF Protection).
Mọi thứ hoạt động tốt cho đến nay, nhưng có vẻ như ấu trùng không làm mới mã thông báo csrf trên mọi yêu cầu.
Sự cố xảy ra là nếu người dùng nhấn vào nút quay lại của trình duyệt để quay lại biểu mẫu đã gửi, dữ liệu đã nhập sẽ tiếp tục và người dùng có thể "gửi lại" biểu mẫu. Điều này có thể tạo ra một cánh cửa mở cho kẻ gửi thư rác.
Thông thường điều này bị ngăn chặn bởi mã thông báo CSRF, vì nó được làm mới theo mọi yêu cầu, nhưng Laravel dường như không làm như vậy.
Tôi sử dụng phương pháp "Bộ điều khiển tài nguyên" của Laravel (Laravel Docs: Resource Controllers) để xử lý dạng xem bài đăng và dạng blog. Hơn nữa, tôi sử dụng trình xác nhận đầu vào của Laravels trước khi lưu trữ đầu vào được gửi trong cơ sở dữ liệu (MySQL).
Vì vậy, các ý tưởng sau đây đã đưa ra:
bằng cách nào đó buộc Laravel 4 để tạo lại CSRF tự động trên mọi yêu cầu
tạo một token và bao gồm nó thành dạng bằng tay
lưu dấu thời gian của hình thức đệ trình trong phiên người dùng (php hoặc cơ sở dữ liệu) và ga ne hình thức đệ trình w trên cơ sở thời gian
Cá nhân tôi thích những ý tưởng đầu tiên, nhưng tiếc là tôi không thể tìm thấy một cách để buộc laravel cư xử thế nào tôi muốn nó được, mà không cần hack "Illuminate" riêng của mình (mà tôi muốn giữ nguyên trạng thái "để có thể cập nhật laravel mà không cần" rắc rối hoff "^^).
Bạn sẽ đề xuất điều gì?
Bạn tự xử lý vấn đề như thế nào?
Tôi chỉ cần kiểm tra như thế nào stackoverflow xử lý các hình thức trên "history.back()": Trên tái nộp của cùng một dữ liệu, nó nói "Một câu hỏi với tiêu đề đó đã tồn tại; hãy cụ thể hơn." và "Bạn chỉ có thể đăng 20 phút một lần". Là một lựa chọn nhưng không thực sự những gì tôi muốn ... –