Czy przesyłanie tokenów dostępu za pomocą nagłówków HTTP jest bezpieczne?

11

Jest to pierwsza usługa internetowa RESTful i martwię się o kwestie bezpieczeństwa. Czy przesyłanie mojego tokena dostępowego za pomocą nagłówków HTTP jest bezpieczne? Na przykład:

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

parameter1=foo&parameter2=bar

Połączenie wykonane SSL. Ponadto, co należy zdefiniować jako scopeatrybut każdegoaccess token

ahmedsaber111
źródło

Odpowiedzi:

12

Gdyby przesłać nagłówek tokena dostępu przez HTTP, byłby on podatny na atak man-in-the-middle.

Podczas przesyłania nagłówka tokena dostępu przez HTTPS nikt poza klientem nie będzie mógł zobaczyć tego tokena, ponieważ żądanie zostanie tunelowane przez bezpieczne połączenie.

CodeART
źródło
4
Niechlujny klient może być podatny na ataki MITM nawet przy użyciu SSL.
ott--
Czy możesz podać przykład?
CodeART
Nie możesz zagwarantować bezpieczeństwa po stronie klienta, jeśli nie kontrolujesz klienta, ale dotyczy to wszystkiego.
Matt
2
@CodeWorks Większość przeglądarek oferuje użytkownikowi możliwość połączenia się z zasobem HTTPS, nawet jeśli certyfikat SSL jest nieprawidłowy dla zasobu. Jest to prawdopodobnie jedna z najgłupszych rzeczy, jakie kiedykolwiek zrobili autorzy przeglądarek, i zasadniczo oferuje akceptację ataków MITM.
Ross Patterson
1
@ Czy wtedy ten konkretny certyfikat MITM powinien zostać dodany do głównej listy certyfikatów klientów. W przeciwnym razie zredukowałeś ostrzeżenie HTTPS do dosłownego „płaczącego wilka”, którego oboje A) szkolą użytkowników, aby na zawsze je ignorowali, B) trudno (z powodu A) odróżnić od prawdziwego, złośliwego ataku MITM.
Nick T
8

Przenoszenie tokena dostępu przez nagłówki http nie stanowi poważnego problemu, ponieważ przesyłane dane są szyfrowane, gdy używany jest protokół SSL, co oznacza, że ​​może je zrozumieć tylko konkretny klient, który wysłał to żądanie, i serwer, który odpowiada na to żądanie, pomiędzy nimi nie ma szans na zrozumieć dane stron trzecich.

Inna sprawa jest access tokenoparta na czasie, więc mają życie przez określony czas, więc nie mają szans na wykorzystanie w przyszłości.

Ashwin
źródło
-1

Należy również wziąć pod uwagę buforowanie.

Twój backend może zobaczyć kilka wywołań do tego samego adresu URL, z tymi samymi parametrami GET / POST, ale z innym tokenem dostępu do nagłówka i rozważyć, że zawartość może być buforowana i może być przechowywana w dowolnej treści.

Thomas Decaux
źródło