È sicuro trasmettere token di accesso tramite le intestazioni HTTP?


11

È il primo servizio web RESTful e sono preoccupato per problemi di sicurezza. È sicuro trasmettere il mio token di accesso tramite le intestazioni HTTP? Per esempio:

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

parameter1=foo&parameter2=bar

La connessione stabilita SSL. Inoltre, ciò che è necessario definire come scopeattributo per ogniaccess token

Risposte:


12

Se dovessi trasmettere l'intestazione del token di accesso tramite HTTP, sarebbe vulnerabile all'attacco man-in-the-middle.

Quando si trasmette l'intestazione del token di accesso tramite HTTPS, nessuno, a parte il client, sarà in grado di vedere questo token poiché la richiesta verrà sintonizzata tramite una connessione protetta.


4
Un client sciatto può essere vulnerabile agli attacchi MITM anche con SSL.
ott--

Potete fornire un esempio per favore?
CodeART

Non puoi garantire la sicurezza lato client se non controlli il client, ma è vero praticamente per qualsiasi cosa.
Matt,

2
@CodeWorks La maggior parte dei browser offrirà all'utente la possibilità di connettersi a una risorsa HTTPS anche se il certificato SSL è errato per la risorsa. Questa è, senza dubbio, una delle cose più stupide che gli autori di browser abbiano mai fatto e offre essenzialmente di accettare attacchi MITM.
Ross Patterson,

1
@Dan quindi quel certificato MITM specifico dovrebbe essere aggiunto all'elenco di certificati radice dei client. Altrimenti hai ridotto l'avvertimento HTTPS a un letterale "pianto lupo" che entrambi A) addestra i tuoi utenti a ignorarlo per sempre, B) è difficile (impossibile a causa di A) distinguere da un attacco MITM reale e dannoso.
Nick T

8

Non ci sono seri problemi nel trasferimento del token di accesso tramite le intestazioni http perché i dati trasferiti vengono crittografati quando viene utilizzato SSL, significa che possono essere compresi solo da un determinato client che ha fatto quella richiesta e il server che risponde alla richiesta, nel mezzo non ci sono possibilità di comprendere i dati di terze parti.

Un'altra cosa è access tokenbasata sul tempo, quindi hanno una vita per un periodo specifico, quindi non hanno possibilità di utilizzo in futuro.


-1

Una cosa da considerare è anche la memorizzazione nella cache.

Il tuo back-end potrebbe vedere più chiamate allo stesso URL, con gli stessi parametri GET / POST ma un token di accesso all'intestazione diverso e considerare che il contenuto può essere memorizzato nella cache e può essere suddiviso in qualsiasi corpo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.