Ist es sicher, Zugriffstoken über HTTP-Header zu übertragen?

11

Es ist der erste RESTful-Webdienst und ich bin besorgt über Sicherheitsprobleme. Ist es sicher, mein Zugriffstoken über HTTP-Header zu übertragen? Zum Beispiel:

POST /v1/i/resource HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Api-key: 5cac3297f0d9f46e1gh3k83881ba0980215cd71e
Access_token: 080ab6bd49b138594ac9647dc929122adfb983c8

parameter1=foo&parameter2=bar

Die Verbindung wurde hergestellt SSL. Außerdem muss Was als scopeAttribut für jeden definiert werdenaccess token

ahmedsaber111
quelle

Antworten:

12

Wenn Sie den Zugriffstoken-Header über HTTP übertragen, ist er für den Man-in-the-Middle-Angriff anfällig.

Wenn Sie den Header des Zugriffstokens über HTTPS übertragen, kann niemand außer dem Client dieses Token sehen, da die Anforderung über eine sichere Verbindung getunnelt wird.

CodeART
quelle
4
Ein schlampiger Client kann auch mit SSL für MITM-Angriffe anfällig sein.
ott--
Können Sie bitte ein Beispiel geben?
CodeART
Sie können die clientseitige Sicherheit nicht garantieren, wenn Sie den Client nicht kontrollieren, aber das gilt für fast alles.
Matt
2
@CodeWorks Die meisten Browser bieten dem Benutzer die Möglichkeit, eine Verbindung zu einer HTTPS-Ressource herzustellen, auch wenn das SSL-Zertifikat für die Ressource falsch ist. Dies ist wohl eines der dümmsten Dinge, die Browser-Autoren jemals getan haben, und es bietet im Wesentlichen die Möglichkeit, MITM-Angriffe zu akzeptieren.
Ross Patterson
1
@Dan dann sollte dieses spezifische MITM-Zertifikat zur Stammzertifikatliste der Clients hinzugefügt werden. Andernfalls haben Sie die HTTPS-Warnung auf einen wörtlichen "Schreiwolf" reduziert, der besagt, dass beide A) Ihre Benutzer trainieren, sie für immer zu ignorieren, B) schwer (aufgrund von A unmöglich) von einem echten, böswilligen MITM-Angriff zu unterscheiden sind.
Nick T
8

Es gibt kein ernstes Problem bei der Übertragung von Zugriffstoken über http-Header, da übertragene Daten bei Verwendung von SSL verschlüsselt werden. Dies bedeutet, dass sie nur von einem bestimmten Client verstanden werden können, der diese Anfrage gestellt hat, und von dem Server, der auf die Anfrage antwortet, dazwischen keine Chancen bestehen die Daten von Dritten verstehen.

Eine andere Sache ist access token, dass sie zeitbasiert sind, so dass sie ein Leben für einen bestimmten Zeitraum haben, so dass sie keine Chancen haben, in Zukunft verwendet zu werden.

Ashwin
quelle
-1

Eine Sache zu berücksichtigen ist auch das Caching.

In Ihrem Backend werden möglicherweise mehrere Aufrufe derselben URL mit denselben GET / POST-Parametern angezeigt, es kann jedoch ein anderes Header-Zugriffstoken verwendet werden, und der Inhalt kann zwischengespeichert und an einen beliebigen Text getrennt werden.

Thomas Decaux
quelle