2011-08-21 61 views
6

Có cách nào để tôi có thể biết chính xác máy chủ nào có yêu cầu POST không?Nguồn gốc yêu cầu POST

Tôi đang cố gắng để thực hiện một phương pháp trong đó tôi có thể kiểm tra xem yêu cầu cụ thể đã có nguồn gốc từ trang web của tôi, và do đó điều này sẽ giúp tôi giữ cho trang web của tôi an toàn

Cảm ơn

+0

Bạn đang tìm kiếm liên kết giới thiệu? Trang mà người dùng đến từ đâu? –

+0

Bạn có thực sự có nghĩa là "bắt nguồn từ trang web của tôi" hay ý của bạn là "có nguồn gốc từ biểu mẫu trên trang được gửi đến trình duyệt từ trang web của tôi"? Chúng rất khác nhau. –

+2

KHÔNG dựa vào tiêu đề người giới thiệu. Nó không thể được tin cậy và thường bị tước trong tường lửa để rò rỉ thông tin về các hệ thống nội bộ. – Erlend

Trả lời

8

Có vẻ như bạn đang cố gắng để thực hiện trang web chéo bảo vệ Yêu cầu giả mạo, trong đó bạn cần đảm bảo yêu cầu bắt nguồn từ HTML được phân phối từ máy chủ web của bạn. Không dựa vào tiêu đề của người giới thiệu vì nó thường bị tước trong tường lửa và có thể được điều khiển.

Xem OWASP để biết một số nguồn tốt về cách triển khai loại bảo vệ này. Về cơ bản nó đi như thế này:

  1. Tạo một giá trị ngẫu nhiên an toàn và dính vào nó trên phiên của người dùng

  2. Đối với mỗi hình thức HTML, bao gồm giá trị này như một giá trị ẩn()

  3. Bất cứ khi nào yêu cầu POST quay lại máy chủ của bạn, hãy kiểm tra xem giá trị từ trường ẩn có giống với giá trị trong phiên của người dùng hay không. Từ chối yêu cầu nếu không.

Vì màu sắc là duy nhất cho mỗi người dùng, kẻ tấn công không thể đơn giản giả mạo biểu mẫu với giá trị được điều chỉnh trước và lừa người dùng tự động đăng nó với javascript. Yêu cầu sẽ bị từ chối vì kẻ tấn công sẽ không biết giá trị nào cần đưa vào trường ẩn trong biểu mẫu giả mạo của anh ta.

+0

"Bất cứ khi nào yêu cầu POST quay lại máy chủ của bạn, hãy kiểm tra xem giá trị từ trường ẩn có giống với giá trị trong phiên của người dùng không." --- tốt, bạn đã bỏ phiếu cho tôi và không mô tả lý do và cách kiểm tra ** nguồn gốc ** của yêu cầu. – zerkms

+0

cảm ơn vì sự thấu hiểu! : D – Anant

+0

zerkms: Vì vậy, bạn đã downvoted tôi vì tôi downvoted bạn? Tôi đã cố gắng nhìn xa hơn câu hỏi. "Tôi đang cố gắng triển khai phương pháp trong đó tôi có thể kiểm tra yêu cầu cụ thể có nguồn gốc từ trang web của mình và do đó điều này sẽ giúp tôi giữ an toàn cho trang web của mình" Anh ấy muốn kiểm tra trên trang web _his_, cho dù yêu cầu bắt nguồn từ trang web _his_ – Erlend

1

Bạn muốn $_SERVER["REMOTE_ADDR"].

Các vấn đề liên quan