Как я могу оценить ограничение публичного API? - PullRequest
4 голосов
/ 04 февраля 2011

У меня есть алгоритм, который получает входные данные и выдает выходные данные, которые я хотел бы, чтобы разработчики использовали как API.Чтобы предотвратить атаку типа «отказ в обслуживании» и чрезмерное использование, мне нужны ограничения скорости или защита.Какие варианты у меня есть?Предоставляю ли я учетные записи и ключи API?Как это вообще работает?А какие еще идеи возможны для этого сценария?

Ответы [ 3 ]

4 голосов
/ 04 февраля 2011

Учетные записи и ключи API звучат как хорошая идея, если ничто иное не мешает другим пользователям, кроме ваших предполагаемых разработчиков, получить доступ к вашему API.

Должно быть довольно просто иметь простую таблицу базы данных, в которой регистрируется последний раз, когда к конкретному API был получен доступ, и запрещается повторное использование, если к нему обращаются слишком много раз за определенный период времени. Если возможно, верните в следующий раз, когда API будет доступен для повторного использования в выходных данных, поэтому разработчики могут соответствующим образом ограничить его, вместо того, чтобы использовать метод проб и ошибок.

Ожидаете ли вы, что одни и те же входы будут использоваться снова и снова или они будут полностью случайными? Как насчет кеширования вывода и предоставления кеша только разработчикам, пока API не будет готов к повторному использованию? Этот подход гораздо меньше зависит от учетных записей и ключей.

3 голосов
/ 03 июня 2012

Ключи API, безусловно, могут быть хорошим способом, есть openAuth (http://oauth.net), если вы используете сценарии, в которых конечные пользователи будут получать доступ к сервису через приложения, созданные сторонними разработчиками.

ЕслиВы не хотите кодировать ограничения скорости / управление ключами самостоятельно, стоит взглянуть на http://www.3scale.net/, который делает многое из этого бесплатно в виде услуги (плюс другие вещи, включая портал для разработчиков,биллинг и т. д.) Как заявление об отказе от ответственности, я работаю там, поэтому у меня может быть некоторая предвзятость, но мы стараемся сделать это как можно более простым!

Я должен добавить, есть PHP-плагин для 3scale, который вы можете ввести в свой код, и который включит все ограничения скорости и т. Д.

1 голос
/ 04 февраля 2011

другие опции, которые немного менее сложны за счет точности, используют IP-адрес. очевидно, это легче преодолеть, но для обычного пользователя, который не знает, что такое IP-адрес, это работает. Также легко настроить.

все зависит от сложности приложения и количества времени, которое у вас есть на это

...