Một trong những trang web của chúng tôi đã được cập nhật Drupal Core 7.83 lên 7.87. Có một mô-đun tùy chỉnh giúp mở rộng chức năng biểu mẫu web cho một số biểu mẫu trên trang web. Nhà phát triển trước đây đã viết một hàm để tạo mã thông báo cơ sở 64 an toàn cho URL duy nhất bằng cách sử dụng openssl, được chỉ định theo độ dài, cho biểu mẫu web. Nó được sử dụng để kiểm tra xem các $token
được gửi dưới dạng và tồn tại trong người dùng $_SESSION
. Kiểm tra này ngăn trang xác nhận "Cảm ơn" của biểu mẫu được truy cập mà không cần xác thực do trình xử lý gửi biểu mẫu web bị ghi đè để dữ liệu gửi được lưu vào cơ sở dữ liệu bên ngoài.
Chuyển hướng trang xác nhận tùy chỉnh được viết là:
$form_state['redirect'] = array("form-submission/$nid/thank-you", array("query" => array("token" => $token)));
Cái được nhìn thấy trong thanh địa chỉ của trình duyệt là:
www.domain.com/form-submission/1/thank-you?token=YmFzZTY0dG9rZW4=
Trước khi cập nhật Drupal Core, mọi thứ vẫn hoạt động như mong đợi. Tuy nhiên, kể từ đó, bất kỳ nội dung gửi nào đi qua chuyển hướng tùy chỉnh đó đều gây ra
403 NHẬN mã thông báo=YmFzZTY0dG9rZW4=
Truy cập bị từ chối. Bạn không có quyền truy cập trang này.
Trên mẫu gửi.
Khi tôi sửa đổi
$form_state['redirect'] = array("form-submission/$nid/thank-you", array("query" => array("token" => $token)));
đến
$form_state['redirect'] = array("gửi biểu mẫu/$nid/thank-you");
biểu mẫu sau đó đôi khi chuyển đến trang xác nhận tùy chỉnh, đôi khi không. Kết quả không nhất quán.
Biểu mẫu web và mã thông báo mô-đun được cập nhật.
Có ai có bất kỳ thông tin chi tiết, công cụ, mẹo nào để khắc phục sự cố hoặc trợ giúp mà họ có thể chia sẻ không?