개요 :
우리 회사는 요금 제한 API를 개발했습니다. 우리의 목표는 두 가지입니다.
- A : 제품을 중심으로 강력한 개발자 생태계를 만드십시오.
- B : 자체 애플리케이션을 구동하는 데 API를 사용하여 API의 힘을 보여줍니다.
설명 : 왜 속도 제한이 있습니까?
API를 제품에 추가하여 판매하기 때문에 API 등급을 제한합니다. API에 대한 익명 액세스는 시간당 API 호출에 대한 임계 값이 매우 낮은 반면, 유료 고객은 시간당 1000 개 이상의 호출이 허용됩니다.
문제 :
속도 제한 API는 개발자 생태계에 적합하지만 dogfood를 위해 동일한 속도 제한으로 제한하는 것을 허용 할 수 없습니다. API의 프런트 엔드는 모두 JavaScript이며 API에 대한 직접 Ajax 호출을 수행합니다.
그래서 질문은 :
속도 제한을 제거하는 과정에서 쉽게 스푸핑 할 수없는 속도 제한을 제거 할 수 있도록 API를 어떻게 보호합니까?
탐색 된 솔루션 (및 작동하지 않는 이유)
호스트 헤더에 대해 리퍼러를 확인하십시오. - 리퍼러 가 쉽게 위조 되기 때문에 결함 이 있습니다.
사용 HMAC를 다음 서버에 요청을 확인, 요청 및 공유 비밀 기반으로 서명을 만들 수 있습니다. - 프론트 엔드 JavaScript를 조사하여 비밀과 알고리즘을 쉽게 결정할 수 있기 때문에 결함이 있습니다.
요청 프록시 및 프록시에서 요청 서명- 프록시 자체가 API를 노출하므로 여전히 결함이 있습니다.
질문:
대체 솔루션을 제시하기 위해 Stack Overflow의 뛰어난 마음을 찾고 있습니다. 이 문제를 어떻게 해결 하시겠습니까?