Tổng quat:
Công ty của tôi đã phát triển một API giới hạn tỷ lệ. Mục tiêu của chúng tôi là gấp đôi:
- A: Tạo một hệ sinh thái nhà phát triển mạnh mẽ xung quanh sản phẩm của chúng tôi.
- B: Thể hiện sức mạnh của API của chúng tôi bằng cách sử dụng nó để thúc đẩy ứng dụng của riêng chúng tôi.
Làm rõ: Tại sao lại giới hạn tỷ lệ?
Chúng tôi đánh giá giới hạn API của mình, bởi vì chúng tôi bán nó như một phần bổ sung cho sản phẩm của mình. Quyền truy cập ẩn danh vào API của chúng tôi có ngưỡng rất thấp cho các cuộc gọi API mỗi giờ, trong khi khách hàng trả phí của chúng tôi được phép lên tới 1000 cuộc gọi mỗi giờ hoặc hơn.
Vấn đề:
API giới hạn tỷ lệ của chúng tôi là tuyệt vời cho hệ sinh thái của nhà phát triển, nhưng để chúng tôi thực hiện dogfood nó, chúng tôi không thể cho phép nó bị hạn chế trong cùng một giới hạn tỷ lệ. Giao diện người dùng của API của chúng tôi là tất cả JavaScript, thực hiện các lệnh gọi Ajax trực tiếp đến API.
Vì vậy, câu hỏi là:
Làm thế nào để bạn bảo mật một api để có thể xóa giới hạn tỷ lệ mà trong quá trình xóa giới hạn tỷ lệ đó không thể dễ dàng bị giả mạo?
Giải pháp đã khám phá (và tại sao chúng không hoạt động)
Xác minh liên kết giới thiệu so với tiêu đề máy chủ. - Sai vì người giới thiệu dễ bị làm giả.
Sử dụng HMAC để tạo chữ ký dựa trên yêu cầu và bí mật được chia sẻ, sau đó xác minh yêu cầu trên máy chủ. - Sai phạm vì bí mật và thuật toán sẽ dễ dàng được xác định bằng cách xem xét JavaScript giao diện người dùng.
Proxy yêu cầu và ký yêu cầu trong proxy - Vẫn còn sai sót, vì proxy chính nó làm lộ API.
Câu hỏi:
Tôi đang tìm kiếm những bộ óc xuất chúng trên Stack Overflow để đưa ra các giải pháp thay thế. Bạn sẽ giải quyết vấn đề này như thế nào?