Giả sử tôi có một trang web có nhiều thông tin về các sản phẩm của chúng tôi. Tôi muốn một số khách hàng của chúng tôi (bao gồm cả chúng tôi!) Có thể tìm kiếm các sản phẩm của chúng tôi theo nhiều phương pháp khác nhau, bao gồm:Thực tiễn tốt nhất cho API an toàn?
1) Kéo dữ liệu từ cuộc gọi AJAX trả về dữ liệu theo cách mát mẻ, JavaScripty-way 2) Tạo các ứng dụng iPhone sử dụng dữ liệu đó; 3) Có các ứng dụng web khác sử dụng dữ liệu đó để tự kết thúc.
Thông thường, tôi chỉ cần tạo một API và được thực hiện với nó. Tuy nhiên, dữ liệu này thực tế là bí mật - có nghĩa là chúng tôi không muốn đối thủ cạnh tranh của mình có thể tìm kiếm tất cả các sản phẩm của chúng tôi mỗi buổi sáng và sau đó tự động đặt giá để cắt giảm chúng tôi. Và chúng tôi cũng muốn có thể xem ai có thể lạm dụng hệ thống, vì vậy nếu ai đó thực hiện mười triệu cuộc gọi phức tạp tới API của chúng tôi mỗi ngày và bogging xuống máy chủ của chúng tôi, chúng tôi có thể cắt giảm chúng.
Bước hợp lý tiếp theo của tôi là tạo khóa của nhà phát triển để hạn chế quyền truy cập - điều này sẽ hoạt động tốt cho các ứng dụng web nhưng không quá nhiều đối với bất kỳ cuộc gọi AJAX nào. (Như tôi thấy, họ cần phải cung cấp khóa trong JavaScript, đó là trong văn bản rõ ràng và dễ dàng nhìn thấy, và do đó thực sự không có bảo mật nào cả. Đặc biệt nếu chúng ta muốn sử dụng các khóa của nhà phát triển riêng của chúng tôi trên trang web của chúng tôi để thực hiện các cuộc gọi AJAX này.)
Vì vậy, câu hỏi của tôi: sau khi xem xét Oauth và OpenID một thời gian, tôi không chắc có giải pháp nào có thể xử lý cả ba điều trên. Có một số loại "thực hành tốt nhất" kinh điển cho các khóa của nhà phát triển, hoặc Oauth và OpenID có thể xử lý các cuộc gọi AJAX dễ dàng trong một thời trang nào đó mà tôi chưa biết, hay tôi thiếu cái gì đó hoàn toàn?
Nhưng làm thế nào máy chủ proxy API này có thể được bảo vệ để ngăn người tấn công lạm dụng nó? – Constantin