Đó là không thể cách an toàn đảm bảo rằng người dùng có thẩm quyền KHÔNG THỂ giả mạo yêu cầu hợp lệ.
Sau khi tất cả, nếu trình duyệt có thể tạo "yêu cầu hợp lệ", thì người dùng được ủy quyền có thể là!
Tuy nhiên, đây là một yêu cầu bất thường và tôi muốn biết động lực đằng sau nó là gì?
Tuy nhiên, có một số cách gây khó khăn hơn trong việc giả mạo yêu cầu.
Vì không có phương pháp nào hoàn toàn an toàn, bạn có thể thử obfuscate và làm cho nó tẻ nhạt để ai đó giả mạo yêu cầu của bạn.
Như những người khác đã đề xuất, bạn có thể tạo "mã thông báo" ngẫu nhiên mỗi phiên và yêu cầu nó trong URL (hoặc dưới dạng đường dẫn hoặc dưới dạng chuỗi truy vấn).
Sẽ tốt hơn nếu bạn sử dụng JavaScript cho việc này. Hiển thị đầu vào bị ẩn với "mã thông báo" này. Sau đó, chặn sự kiện click
của mỗi liên kết, thêm giá trị "mã thông báo" vào URL, sau đó điều hướng đến URL.
Bạn có thể tăng cường JavaScript bằng cách nào đó "xử lý" mã thông báo của bạn trước khi sử dụng nó và rút gọn JavaScript của bạn để làm xáo trộn nó ... điều này chắc chắn sẽ ngăn chặn ngay cả những người dùng ở mức trung bình.
Có rất nhiều giải pháp khả thi, nhưng giải pháp "đúng" thực sự phụ thuộc vào hành vi cụ thể mà bạn đang cố gắng ngăn chặn.
Nguồn
2011-12-01 08:55:42
thế nào "an toàn" không cần thiết này được? Bạn chỉ muốn ngăn người dùng có thể đánh dấu trang và/hoặc nhập URL? Hay bạn thực sự muốn làm cho nó an toàn chống lại những người thực sự biết làm thế nào để giả mạo Javascript và cookie? –
Tôi muốn làm điều này an toàn nhất có thể, đó là lý do tại sao urlreferrer không thực sự phù hợp vì nó có thể được giả mạo khá dễ dàng – Duy
Điều này có ngăn chặn CSRF không? Hoặc bạn có thực sự cần phải ngăn chặn ngay cả những người dùng "được ủy quyền" khỏi các yêu cầu hợp lệ giả mạo không? –