Обзор:
Моя компания разработала API с ограничением скорости. Наша цель двоякая:
- О: Создайте вокруг нашего продукта сильную экосистему для разработчиков.
- B: Продемонстрируйте мощь нашего API, используя его для управления нашим собственным приложением.
Уточнение: Зачем вообще ограничение по скорости?
Мы оцениваем ограничение нашего API, потому что мы продаем его как дополнение к нашему продукту. Анонимный доступ к нашему API имеет очень низкий порог для вызовов API в час, тогда как нашим платным клиентам разрешено более 1000 вызовов в час и более.
Эта проблема:
Наш API с ограничением скорости отлично подходит для экосистемы разработчиков, но для того, чтобы мы могли испытать его, мы не можем допустить, чтобы он ограничивался тем же ограничением скорости. Передняя часть нашего API - это весь JavaScript, выполняющий прямые Ajax-вызовы API.
Итак, вопрос:
Как защитить api, чтобы можно было удалить ограничение скорости, когда в процессе удаления такого ограничения скорости не может быть легко подделано?
Изученные решения (и почему они не сработали)
Проверьте реферер по заголовку хоста. - Неправильно, потому что реферера легко подделать.
Используйте HMAC для создания подписи на основе запроса и общего секрета, а затем проверьте запрос на сервере. - Ошибочно, потому что секрет и алгоритм можно было бы легко определить, заглянув в интерфейс JavaScript.
Прокси-сервер запроса и подпись запроса в прокси-сервере - все еще некорректно, так как прокси-сервер сам предоставляет API.
Вопрос:
Я обращаюсь к блестящим умам Stack Overflow, чтобы они представили альтернативные решения. Как бы вы решили эту проблему?