Если вы предоставляете этот субаренд для аутентифицированных пользователей, то довольно просто дать им уникальные ключи (что-то, что хэширует их идентификатор пользователя или сеанс с ключом API и начальной меткой времени, и проверяет его / регистрирует его / ищетскоты до доступа к API).Если вы делаете это в открытой сети, без какой-либо аутентификации пользователя, то ограничение скорости действительно становится очень сложным.Обычно для создания анонимного профиля, который получает временный ключ во внешнем интерфейсе, вы хотите использовать комбинацию хеш-сессий, IP-адреса, операционной системы и данных браузера.Один довольно надежный способ сделать это - заставить пользователей пройти через CAPTCHA, прежде чем обслуживать временный ключ, который позволяет им ограниченное количество использований постоянного ключа.Любой пользователь, чей ip / browser / session соответствует существующим атрибутам известного клиентского ключа, шунтируется на него (и получает возможность пропустить CAPTCHA);любой, кто не соответствует существующему профилю, получает CAPTCHA.Это делает вас менее привлекательной целью для подмены.Вдобавок ко всему, вы всегда должны ограничивать скорость всего этого, в пределах разумного количества посещений в день, исходя из того, какой трафик вы ожидаете (или можете себе позволить), чтобы у вас не было никаких сюрпризов.Это минимальный уровень защиты, который вы хотели бы получить, если бы деньги вашего клиента находились на линии каждый раз, когда используется их ключ API.Потребуется простая база данных для хранения этих «профилей», отслеживания использования, проверки на наличие зверюшек и поддержки действующих на данный момент клиентских ключей.Срок действия клиентских ключей всегда должен истекать регулярно - либо с разницей во времени, когда они были созданы, либо с обычным процессом cron, либо с максимальным количеством использований и т. Д.
Еще одна вещь, которую я часто делаю, это ограничение скоростина основе кривой.Если я считаю целесообразным 5 использований в минуту, например, то после 5 использований в минуту от сеанса каждое использование добавляет задержку доли секунды * количество использований в последнюю минуту в квадрате перед даннымиобслуживается.
Лучшим ответом было бы оставить все это за системой входа в систему и обезопасить , что .