2017-02-17 4 views
3

Wir sind kleine Start-up und wir verwenden SailsJS (die auf NodeJS sitzt) auf unserem Backend. Unseres ist eine API-gesteuerte Architektur. Ich möchte die Ratenbegrenzung für die meisten APIs implementieren. Ich möchte mit einem kleinen Anwendungsfall für die Anmeldung beginnen. Die Anmeldung ist eine öffentliche API und derzeit kann jeder darauf zugreifen, um Konten zu erstellen.Rate begrenzende Anmeldung API

  1. Meine Frage ist, wie kann ich DoS-Angriff durch Rate-Begrenzung dieser öffentlichen API verhindern?
  2. Lass mich sagen, dass ich diese API basierend auf IP-Adresse begrenzen. Dann wäre das Problem, wenn sich einige Benutzer in derselben Organisation befinden. Sie können dieselbe IP-Adresse haben. Also, wie stellen wir sicher, dass sie richtig limitiert sind?

Ich schätze wirklich Ihre Anregungen und Meinungen.

+0

Vielen Dank für den Hinweis. Ich habe meine Frage bearbeitet. – Ashish

+0

Es wurde eine gewaltige Menge über das gesamte Web geschrieben. Es gibt mehrere NPM-Module zur Ratenbegrenzung und viele Artikel und Artikel zu diesem Thema. Es scheint, dass Sie Ihre eigenen Recherchen durchführen sollten und dann mit spezifischeren Fragen zurückkommen sollten, nachdem Sie von dem gelernt haben, worüber bereits geschrieben und umgesetzt wurde. – jfriend00

+1

Muss die Anmeldung eine programmatische API sein oder kann es erforderlich sein, eine Webseite zu durchlaufen? Wenn es erforderlich sein kann, durch eine Webseite zu gehen, können Sie entweder ein Captcha oder einen anderen "Beweis, dass Sie ein Mensch sind" -Mechanismus für den Anmeldevorgang verwenden. Andere API-Anfragen würden jedoch Ratenbegrenzer benötigen. – jfriend00

Antwort

2

Wenn die Anmeldung nicht nur eine programmatische API sein muss und über eine Webseite aufgerufen werden kann, können Sie entweder ein Captcha oder einen anderen "Beweisen Sie sind ein Mensch" -Mechanismus für den Anmeldevorgang verwenden . Dies verhindert programmatisches DoS auf der Anmeldungs-API, da jede Anfrage eine menschliche Intervention erfordert.

Andere API-Anfragen würden jedoch Ratenbegrenzer benötigen, um den Missbrauch eines Kontos zu verhindern, das bereits erstellt wurde. Diese nachfolgenden API-Aufrufe verweisen vermutlich auf ein bestimmtes Konto, sodass Sie die gemeinsame Unternehmens-IP-Adresse umgehen können, indem Sie das Konto und nicht die IP-Adresse begrenzen.

+0

Auf der Anmeldeseite habe ich Captcha auf dem Frontend, aber ich rufe es auch programmatisch in einem anderen Teil des Codes. Also Captcha für die Anmeldung über UI und programmgesteuert Zugriff auf die Benutzererstellung senden eine Art von Token wäre eine gute Idee, richtig? – Ashish

+1

@Ashish - Wenn du gehst Captcha benötigen, dann ist die einzige Registrierung API Sie die Öffentlichkeit präsentieren soll, ist derjenige, der durch das Captcha geht (im Wesentlichen einer Form Post, dass das Captcha verwendet). Sie können auch keine andere nicht-Captcha-API für die öffentliche Anmeldung verwenden, wenn Sie die Verwendung des Captchas benötigen. Sie können das intern haben, nur nicht für die Öffentlichkeit zugänglich. – jfriend00

+0

@Ashish - Hat dies Ihre Frage beantwortet? Wenn dies der Fall ist, geben Sie dies bitte der Community durch Klicken auf das grüne Häkchen links neben der Antwort an. Das wird dir auch einige Reputationspunkte einbringen. – jfriend00