2013-02-07 20 views
6

Wir arbeiten mit einem Dienstanbieter zusammen, der seine Dienste über RESTful API verfügbar macht.Verwenden einer RESTful API - Ist es sicher?

Wir können uns mit der API authentifizieren, indem wir einen Benutzernamen und ein Passwort als URL-Parameter übergeben.

Beispiel: https://example.com/api/service.json?api_user=Username&api_key=Password

Ich weiß, das SSL verwendet. Da Benutzername und Passwort jedoch Teil der URL sind, kann dies nicht von Dritten abgefangen werden?

Antwort

7

Nein, eine dritte Partei kann nur das Ziel (example.com) sehen. Der Rest der URL ist tatsächlich in die Anfrage eingebettet.

Es hilft zu verstehen, wie eine HTTP (oder HTTPS) Anfrage gestellt wird.

  1. Protokoll bestimmen (in diesem Fall HTTPS-Port 443)
  2. get IP-Adresse des Servers mithilfe von DNS
  3. eine TCP-Verbindung zum Server herstellen (wenn SSL beteiligt ist, es ist ein bisschen komplizierter)
  4. Ausgabe eine Anforderung an den Server auf die neue Verbindung, die so etwas wie

    GET /api/service.json?api_user=Username&api_key=Password

aussehen

Da die eigentliche Anfrage Teil des verschlüsselten Datenstroms ist, kann niemand die Verbindung überwachen, um vertrauliche Informationen zu extrahieren.

+0

Vielleicht kann es in ungeschützter Form auf Web-Server-Protokollen angezeigt werden. – mlt

+1

@mit - ja, das könnte ein Problem sein. Es liegt in der Verantwortung des Dienstanbieters sicherzustellen, dass diese Anforderungen nicht protokolliert werden oder in den Protokollen entsprechend zensiert werden. – Ferruccio

5

Da jedoch Benutzername und Passwort Teil der URL sind, konnte dies nicht von einer dritten Partei abgefangen werden?

Die URL wird ebenfalls verschlüsselt gesendet. Mit anderen Worten tritt der Prozess, der den Kanal sichert, vor die URL wird an den Server gesendet.

Sie sind in Sicherheit.

6

Die vorherigen Antworten sind beide technisch korrekt; Wenn Sie HTTPS verwenden, werden die URL- und Querystring-Daten vor der Übertragung verschlüsselt und können als sicher betrachtet werden.

Die Tatsache, dass eine API nach einem Benutzernamen und einem Kennwort als Abfragezeichenfolgeparameter fragt, kann jedoch auf einen etwas laxen Sicherheitsansatz hindeuten.

Zum Beispiel protokollieren viele Webserver die Request-Querystring-Parameter standardmäßig, was bedeutet, dass Ihre Klartext-Credentials irgendwo auf der Festplatte herumliegen (und viele Unternehmen werden Webserver-Logs auf unsichere Weise speichern oder sichern). .

Kurz gesagt: Übergabe von Anmeldeinformationen als Querystring-Parameter ist kein Sicherheitsrisiko per se, aber ist in der Regel eine schlechte Praxis und kann symptomatisch für größere Sicherheitsprobleme sein.

Verwandte Themen