È sicuro assegnare un token Oauth al lato client javascript in modo che possa direttamente effettuare richieste a un server?

6

Al momento ho un'applicazione backbone.js semplice fornita dal mio dominio (esempio.com), a cui viene fornito un token Oauth. Nello specifico, passo il token Oauth attraverso il mio modello di pagina negli argomenti del costruttore della mia classe javascript (modello Backbone). L'applicazione backbone.js (in esecuzione nel browser) utilizza quindi il token Oauth per comunicare direttamente con un server remoto (non lo stesso server da cui è stata fornita la pagina).

È sicuro fornire al codice JavaScript il token Oauth come questo?

L'intera pagina viene pubblicata tramite https, quindi non vi è alcuna preoccupazione per gli attacchi MITM. Il browser ha anche un cookie con gli utenti sessionid al suo interno, quindi non penso che sia molto diverso dal fornire il browser javascript con il token Oauth.

Se questo è terribile, ci sono metodi alternativi che potrebbero essere impiegati? Memorizzare il token Oauth in un cookie sarebbe meglio? (stesse implicazioni di sicurezza di avere un sessionid memorizzato in un cookie).

    
posta csjohn 22.11.2013 - 22:48
fonte

1 risposta

7

Un token bearer OAuth è un modo per mantenere uno stato di sessione utilizzato per contenere uno stato autenticato e, come una password, deve essere protetto. Nel caso di un client backbone.js un utente malintenzionato potrebbe ottenere questo valore usando xss. La memorizzazione del token oauth come cookie consente l'uso del flag httponly che impedisce a un payload xss di leggere questo valore. anche se il token oauth è protetto con un cookie httponly, xss può ancora essere utilizzato per accedere all'api autenticato con un payload JavaScript appositamente predisposto. Un cookie è migliore di altri metodi, tuttavia xss e csrf sono ancora problemi importanti.

    
risposta data 24.11.2013 - 19:49
fonte

Leggi altre domande sui tag