Chuyển đến nội dung
Tất cả bài viết
Blog & hướng dẫn/Xử lý lỗi & Bảo mật
Xử lý lỗi & Bảo mật

Chuyển hướng HTTP qua Proxy: Kiểm tra URL cuối, phương thức và thông tin xác thực

Đọc từng bước redirect để không nhầm trang đăng nhập với API thành công và tránh chuyển tiếp thông tin xác thực sang sai tên miền.

Chuyển hướng HTTP qua Proxy: Kiểm tra URL cuối, phương thức và thông tin xác thực
NỘI DUNG BÀI VIẾTHướng dẫn chi tiết từ ProxySmart

Client tự đi theo chuyển hướng thường che mất những bước trung gian. Khi gọi API qua proxy, cần kiểm tra cả URL cuối và nội dung trả về, không chỉ mã trạng thái cuối cùng.

Phương thức có thể thay đổi

307 và 308 giữ phương thức; 303 thường dẫn sang GET hoặc HEAD, còn 301/302 cho phép POST chuyển thành GET trong cách xử lý nhất định. Xem RFC 9110 về redirect.

Đọc chuỗi chuyển hướng

  1. Ghi URL bắt đầu, mã phản hồi và Location đã che dữ liệu riêng tư.
  2. Đối chiếu từng hostname, giao thức và phương thức của bước tiếp theo.
  3. Kiểm tra URL cuối, Content-Type và một mẫu phản hồi không nhạy cảm.
  4. Đặt giới hạn số bước redirect phù hợp trong client.
  5. Với hệ thống mình quản lý, đối chiếu cấu hình ứng dụng và gateway nếu thấy vòng lặp.

Bảo vệ thông tin xác thực

Đừng bật tùy chọn chuyển tiếp credential qua mọi hostname để làm yêu cầu “chạy được”. Kiểm tra hành vi của thư viện với Authorization, cookie và proxy credential. Tài khoản dùng để xác thực proxy không đồng nghĩa tài khoản được quyền truy cập website đích.

Nếu đích chuyển hướng là một hostname khác, xác minh đó có phải đích hợp lệ của dịch vụ hay không. Không gửi token thật tới môi trường thử chưa được phê duyệt.

Ví dụ minh họa

Một API trả chuyển hướng tới trang đăng nhập. Client đi theo và nhận HTML với mã 200, rồi lỗi khi phân tích JSON. Trong tình huống này, cần sửa phiên đăng nhập hoặc luồng API theo tài liệu. Thay proxy không tự cấp quyền và cũng không biến HTML thành JSON.

Giữ điều kiện phép thử

So sánh tuyến trực tiếp và tuyến proxy với cùng tùy chọn đi theo redirect. Nếu một client bật và client khác tắt, kết quả không tương đương. Không tự thử lại tác vụ ghi dữ liệu khi phương thức hoặc body có thể đã thay đổi ở một bước trung gian.

Khi nào cần hỗ trợ?

Gửi chuỗi mã phản hồi, các hostname đã xác minh, phương thức và URL cuối đã che dữ liệu. Không gửi toàn bộ cookie hoặc token. Đọc thêm hướng dẫn lỗi 403 nếu đích cuối từ chối quyền truy cập.