Tôi đọc mà kiểm tra một cách X-yêu cầu-Với tiêu đề của yêu cầu ajax là tốt để đảm bảo yêu cầu không đến từ bên ngoài. Về phía máy chủ, làm cách nào để kiểm tra tiêu đề này? và cách đúng để phản ứng của tiêu đề này là thiếu hoặc sai (chuyển hướng, ném ngoại lệ, khác)?Làm thế nào máy chủ có thể kiểm tra các yêu cầu ajax không phải từ trang web, X-yêu cầu-Với
Trả lời
Bạn có thể kiểm tra xem nó như thế này ...
$isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
Nếu bạn là chỉ mong truy cập thông qua XHR, sau đó chỉ cần exit
nếu tiêu đề này là không có mặt.
Lưu ý: Tiêu đề này không quan trọng để giả mạo. Đừng dựa vào điều này cho bất cứ điều gì nhưng có vẻ như nó đến từ na XHR.
Tôi muốn sử dụng nó để đảm bảo rằng yêu cầu không đến từ một người đã xem mã js của tôi, lấy các url và gửi dữ liệu đầu vào từ bên ngoài trang web của tôi. Vì vậy, nếu nó có thể được giả mạo, sau đó không có cách nào để bảo vệ khỏi điều này? – zmol
@zmol Tôi xin lỗi, không có cách nào chỉ bằng cách tìm kiếm sự hiện diện của tiêu đề đó. – alex
nhưng có cách nào khác không? Nó không phải là thông qua tiêu đề này. Mục tiêu cuối cùng là để đảm bảo rằng yêu cầu không đến từ một người đọc mã js, đọc những dòng url ajax, và đang chơi url từ bên ngoài :) – zmol
duy nhất chắc chắn cách chữa cháy để đảm bảo rằng yêu cầu đến từ trang web của bạn chứ không phải ai khác là đưa ra dấu hiệu độc đáo cho người sử dụng và lưu nó trong phiên họp của họ. Trong mã của bạn, nơi bạn thực hiện yêu cầu AJAX, sau đó bạn cần phải chuyển mã thông báo này trở lại và nếu nó khớp với mã trong phiên của họ thì bạn có thể chắc chắn rằng yêu cầu đến từ trang web của bạn. Thông tin
thêm: http://en.wikipedia.org/wiki/Cross-site_request_forgery
- 1. Yêu cầu AJAX chéo trang
- 2. Kiểm tra trạng thái yêu cầu ajax của jQuery
- 3. Kiểm tra các yêu cầu AJAX HTTP bằng cách sử dụng Thanh tra Web
- 4. Máy chủ web có thể gửi dữ liệu mà không có yêu cầu từ khách hàng không?
- 5. Kiểm tra xem có yêu cầu AJAX bằng Python
- 6. Không thể tải xuống [tệp] từ [máy chủ] Không thể mở trang web Internet này. Trang web được yêu cầu hoặc không khả dụng
- 7. Máy chủ có thể chặn yêu cầu curl không?
- 8. Làm thế nào để thử một yêu cầu AJAX?
- 9. Biểu mẫu kiểm tra chỉ có sẵn cho các yêu cầu từ máy cục bộ
- 10. Làm cách nào để yêu cầu các trang từ trang web sử dụng OpenID?
- 11. Kiểm tra yêu cầu Ajax trong Mã Igniter
- 12. Yêu cầu HTTP Ajax qua HTTPS Trang
- 13. Làm thế nào tôi có thể kiểm tra các phụ thuộc của máy chủ sql 'views'
- 14. Http Yêu cầu không thành công từ mã ASP.NET trên máy chủ Kiểm tra (cũng không thành công từ IE ... nhưng không phải là firefox !?)
- 15. "Biểu mẫu kiểm tra chỉ khả dụng cho các yêu cầu từ máy cục bộ."
- 16. Kiểm soát truy cập đối với các yêu cầu trang web chéo trong Internet Explorer
- 17. Kiểm tra độ trễ nếu máy chủ từ chối yêu cầu ping
- 18. Máy chủ Web không thể tìm thấy tài nguyên được yêu cầu
- 19. Làm cách nào để kiểm tra trang web bằng XAMPP?
- 20. Làm thế nào để đăng nhập yêu cầu stdout trong máy chủ web Tornado?
- 21. Làm thế nào tôi có thể thử một yêu cầu web bên ngoài trong PHPUnit?
- 22. Làm thế nào để phân biệt các yêu cầu Ajax từ các yêu cầu Http bình thường?
- 23. Làm thế nào để bạn triển khai một trang web cho máy chủ web của bạn?
- 24. Bạn đánh vần kiểm tra trang web như thế nào?
- 25. Khi tôi sử dụng các yêu cầu python để kiểm tra một trang web, nếu trang web chuyển hướng tôi đến một trang khác, tôi có biết không?
- 26. Làm thế nào để gián điệp yêu cầu jQuery AJAX?
- 27. Chặn mọi yêu cầu bắt nguồn từ một trang web
- 28. Yêu cầu HTTPS qua AJAX từ trang HTTP
- 29. Làm cách nào để kiểm tra lỗ hổng SSL trên máy chủ web của tôi?
- 30. Yêu cầu gọi điện cho máy chủ web Nodejs yêu cầu hai lần khi trang được tải
Bạn có thể muốn nhìn vào http://stackoverflow.com/questions/623299/can-the-x-requested-with-http-header-be-spoofed; nó cho thấy rằng 'X-Requested-With' có thể được giả mạo. –
bạn muốn thấy điều này cũng http://www.yiiframework.com/forum/index.php?/topic/4945-yiiapp-request-isajaxrequest/ –