So schränken Sie die AJAX-API vor unerwünschter Verwendung ein (z. B. wenn jemand ein SELECT * ausführt)

8

Ich habe eine Restaurant-Locater-Anwendung, die den Standort von Restaurants in Google Maps zusammenfasst.

Ich benutze JQuery-Schieberegler, um die Anzahl der Restaurants auf der Karte zu begrenzen, indem Sie Suchfilter wie Preis, Art des Essens, Gebietsschema verwenden.

Diese JQuery-Schieberegler rufen über AJAX eine API zurück, die ich erstellt habe, um die Karte zu aktualisieren, ohne dass die Webseite aktualisiert werden muss.

JQuery ruft eine RESTFUL-API wie folgt auf:

%Vor%

Dies gibt eine JSON-Folge von Restaurants zurück, die diesen Kriterien entsprechen, so dass meine Webanwendung auf der Karte alle Restaurants anzeigen kann, die der Suche entsprechen.

Was ich nicht möchte, ist, dass jemand vorbeikommt und meine API herausfindet und ALLE meine Restauranteinträge ausgibt.

Gibt es einen Weg, den ich einschränken kann, wer die oben genannte HTTP API aufruft, so dass nur mein Webserver die URL aufruft und nicht Spammer / Hacker, die meine Datenbank löschen wollen?

Danke

    
JacobT 13.10.2009, 05:04
quelle

2 Antworten

10

Erklären Sie zuerst Ihre Absichten in robots.txt .

Senden Sie dann einen Set-Cookie-Header mit einer Nonce oder einer eindeutigen ID auf der Hauptseite, aber nicht mit Ihren API-Antworten. Wenn der Cookie niemals an Ihren API-Endpunkt gesendet wird, geben Sie eine 401 Bad Request -Antwort zurück, da es sich um einen Bot, einen sehr kaputten Browser oder jemanden handelt, der Ihre Cookies ablehnt. Der Referer-Header kann auch als zusätzliche Überprüfung verwendet werden, aber es ist trivial zu fälschen. Verfolgen Sie, wie viele API-Aufrufe von dieser ID getätigt wurden. Sie können IDs auch mit IP-Adressen abgleichen. Wenn es über dem Schwellenwert liegt, spucke eine 403 Forbidden -Antwort zurück. Stellen Sie Ihren Schwellenwert so hoch ein, dass legitime Benutzer nicht davon erfasst werden.

Halten Sie gute Protokolle und markieren Sie 401 und 403 Antworten.

Realistisch, wenn jemand entschlossen genug ist, können sie diese Informationen ausgeben. Dein Ziel sollte nicht sein, dies unmöglich zu machen, weil du niemals Erfolg haben wirst. (Sehen Sie alle üblichen Aussagen über das Erreichen perfekter Sicherheit.) Stattdessen möchten Sie es deutlich machen:

  • Dieses Verhalten verstößt gegen die Nutzungsbedingungen.
  • Sie versuchen das aktiv zu verhindern.
  • Sie wissen, dass der Täter existiert und ungefähr wer sie sind.
  • Schreckliche Anwälte könnten sich engagieren, wenn das so weitergeht.

(Sie haben einen Anwalt, richtig?)

Um dies zu erreichen, stellen Sie sicher, dass der Text Ihrer 403 Forbidden -Antwort eine gruselig klingende Nachricht wie folgt enthält: "Diese Anfrage überschreitet die maximal zulässige Nutzung der API. Ihre IP-Adresse wurde protokolliert. Bitte beachten Sie die Nutzungsbedingungen des Dienstes und befolgen Sie die Anweisungen in robots.txt . "

IANAL, aber ich glaube, dass der DMCA in dieser Situation angewendet werden kann, wenn Sie das Urheberrecht für Ihre Datenbank beanspruchen. Dies bedeutet im Wesentlichen, dass Sie, wenn Sie die illegale Verwendung Ihrer API an eine IP-Adresse verfolgen können, ein unangenehmes Diagramm an ihren ISP senden können. Dies sollte natürlich immer ein letzter Ausweg sein.

Ich ermutige nicht die Verwendung von zugewiesenen API-Schlüssel / Token, weil sie sich als eine Barriere für Adoption und Art von Schmerzen im Nacken zu verwalten erweisen. Als Gegenpol zu @ womps Antwort bewegt sich Google langsam von ihrem Gebrauch weg. Außerdem glaube ich nicht, dass sie sich in diesem Fall tatsächlich anwenden lassen, weil es sich anhört, als wäre Ihre "API" eher wie ein JSON-Aufruf, der hauptsächlich auf Ihrer eigenen Website verwendet wird.

    
Bob Aman 13.10.2009 19:33
quelle
3

Alle großen REST-APIs tendieren dazu, tokenisierte Authentifizierung zu verwenden. Bevor Sie eine REST-Anforderung ausführen, müssen Sie eine andere Anforderung an den Token-Dienst senden, um ein Token für Ihre Datenanforderung abzurufen. Bing Maps macht das, Amazon macht das, Flickr macht das ... etc.

Ich weiß nicht viel darüber, außer dass ich mit Bing Maps gearbeitet habe. Sie müssen die Token-Authentifizierung mit REST lesen. Hier ist ein Blog-Post, um loszulegen: Ссылка

    
womp 13.10.2009 05:29
quelle

Tags und Links