Tôi đang tạo một hệ thống với CakePHP cần được bảo mật một cách rõ ràng, bởi vì chúng tôi đang xử lý tiền, tài khoản của khách hàng, v.v. Cho đến giờ mọi thứ đều hoạt động tốt, cho đến khi tôi phải tích hợp với nền tảng thanh toán Tôi cần phải chuyển hướng đến trang web của họ và họ chuyển hướng trở lại của tôi.Session.referer_check của PHP bảo vệ tôi từ đâu?
Điều này hoạt động tốt trong máy tính của tôi (debug = 2), nhưng trong sản xuất, khi khách hàng được chuyển hướng trở lại, anh nhận được nhắc đăng nhập thay vì quay trở lại trong "khu vực đăng nhập" của mình. Sau nhiều lần tìm hiểu, tôi thấy điều này là do CakePHP đặt session.referer_check, điều này làm mất hiệu lực phiên nếu HTTP_REFERER đến từ một máy chủ khác so với tôi.
Bây giờ, thông thường, tôi sẽ vô hiệu hóa tính năng này mà không suy nghĩ lần hai, nhưng trong hệ thống này, tôi quan tâm nhiều đến vấn đề bảo mật hơn bình thường.
Câu hỏi của tôi chính xác là session.referer_check có nghĩa vụ bảo vệ tôi từ đâu?
Loại tấn công/khai thác/điều xấu nào có thể được thực hiện cho trang web của tôi nếu tôi tắt tính năng này?
Tôi đoán rằng có một số lý do tại sao điều này tồn tại, nhưng tôi không thể tưởng tượng nó sẽ bảo vệ tôi khỏi điều gì.
Bạn có thể cho tôi bất kỳ ý tưởng nào không?
Tắt tính năng này có an toàn không?
Cảm ơn bạn
Daniel
Bạn có 100% đang kiểm tra liên kết giới thiệu chứ không phải mã thông báo được gửi cùng với biểu mẫu trong yêu cầu trước đó để bảo vệ chống lại CSRF không? – Pablo
Chắc chắn 100%. CakePHP không kiểm tra liên kết giới thiệu, nó chỉ bật tính năng referer_check (một tính năng PHP kiểm tra chính liên kết giới thiệu: http://www.php.net/manual/en/session.configuration.php#ini.session.referer-check) - Ngoài ra, kết quả tôi thấy là đăng nhập mọi người. Những gì CakePHP làm khi nó không giống như mã thông báo CSRF nó nhận được (hoặc khi nó không nhận được một) là "blackholing" (trang trống, về cơ bản) –
Tương tự: http://stackoverflow.com/questions/22079477/cakephp -session-is-lost-after-an-oauth-redirect – trante