2017-02-17 14 views
3

Мы немного запущены, и мы используем SailsJS (который находится поверх NodeJS) на нашем сервере. Наша архитектура, управляемая API. Я хочу реализовать ограничение скорости для большинства API. Я хочу начать с небольшого варианта использования для регистрации. Регистрация - это общедоступный API, и в настоящее время любой пользователь может получить к нему доступ для создания учетных записей.Ограничение скорости регистрации API

  1. Мой вопрос в том, как я могу предотвратить DoS-атаку путем ограничения этого публичного API?
  2. Скажем, я оцениваю ограничение этого API на основе IP-адреса. Тогда проблема будет заключаться в том, что некоторые пользователи находятся в одной организации. Они могут иметь одинаковый IP-адрес. Итак, как мы уверены, что они ограничены скоростью?

Я действительно ценю ваши предложения и мнения.

+0

Благодарим за указание. Я отредактировал мой вопрос. – Ashish

+0

Там было огромное количество писем о скорости ограничения по всему Интернету. Существует несколько модулей NPM для ограничения скорости и много статей и статей, написанных по этой теме. Кажется, вы должны сделать свое собственное исследование, а затем вернуться сюда с более конкретными вопросами после того, как узнаете из того, что уже было написано и реализовано. – jfriend00

+1

Должна ли регистрация быть программным API или может потребоваться пройти через веб-страницу? Если вам может потребоваться пройти через веб-страницу, вы можете использовать механизм отслеживания или какой-либо другой «доказать, что вы являетесь человеком» для операции регистрации. Тем не менее, для других запросов API потребуется ограничение скорости. – jfriend00

ответ

2

Если регистрация не должна быть чисто программным API и может потребоваться пройти через веб-страницу, то вы можете использовать либо механизм перехвата, либо какой-либо другой механизм «докажите, что вы являетесь человеком» для операции регистрации конкретно , Это предотвратит программные DoS в API регистрации, поскольку каждый запрос требует вмешательства человека.

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

+0

На стороне регистрации у меня есть captcha на интерфейсе, но я также вызываю его программно в какой-то другой части кода. Итак, с помощью captcha для регистрации через пользовательский интерфейс и для программного доступа к созданию пользователя, отправляющего какой-то токен, было бы хорошей идеей? – Ashish

+1

@Ashish - Если вам понадобится captcha, то единственным зарегистрированным API, который вы должны представить публике, является тот, который проходит через captcha (по существу сообщение формы, которое использует капчу). У вас также не может быть другого API-интерфейса, не связанного с подпиской, если вы хотите использовать captcha. Вы можете иметь это внутренне, просто не открытое для публики. – jfriend00

+0

@Ashish - Это ответ на ваш вопрос? Если да, сообщите об этом сообществу, нажав зеленую галочку слева от ответа. Это также принесет вам некоторые очки репутации. – jfriend00