2008-08-18 40 views
9

Thực tiễn tốt nhất để đảm bảo rằng các cuộc gọi ajax nhất định đến các trang nhất định chỉ được chấp nhận từ người dùng đã được xác thực?Chỉ chấp nhận một số yêu cầu ajax từ người dùng đã được xác thực

Ví dụ:

Hãy nói rằng tôi có một trang chính gọi blog.php (Tôi biết, sự sáng tạo đầy dẫy). Hãy cũng nói rằng có một trang được gọi là delete.php tìm kiếm thông số post_id và sau đó xóa một số mục nhập từ cơ sở dữ liệu.

Trong ví dụ rất giả tạo này, có một số cơ chế trên blog.php gửi yêu cầu qua ajax tới delete.php để xóa một mục nhập.

Bây giờ, cơ chế này sẽ chỉ khả dụng cho người dùng được xác thực trên blog.php. Nhưng những gì để ngăn chặn một người nào đó từ chỉ cần gọi delete.php với một loạt các số ngẫu nhiên và xóa tất cả mọi thứ trong trang web?

tôi đã làm một thử nghiệm nhanh nơi tôi thiết lập một biến session trong blog.php và sau đó đã làm một cuộc gọi ajax để delete.php trở lại nếu biến phiên đã được thiết lập hay không (nó không).

Cách được chấp nhận để xử lý loại điều này là gì?


OK. Tôi phải điên lên lần đầu tiên tôi thử điều này.

Tôi vừa thực hiện một thử nghiệm khác như thử nghiệm mô tả ở trên và nó hoạt động hoàn hảo.

Trả lời

8

Bạn đã đúng khi cố sử dụng các biến phiên. Khi người dùng của bạn xác thực, bạn nên lưu trữ thông tin đó trong phiên của họ để mỗi lần xem trang tiếp theo sẽ thấy điều đó. Đảm bảo bạn đang gọi session_start() trên cả hai trang (blog.php và delete.php) trước khi truy cập $ _SESSION. Ngoài ra, hãy đảm bảo bạn đã bật cookie - và nếu không, bạn phải chuyển một thông số bổ sung trong chuỗi truy vấn, thường là PHPSESSID = < session_id()>.

3

Bạn không nên dựa vào các phiên để xác thực mà không thực hiện các hành động bổ sung. Read more on.

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