Secure HttpOnly Cookie o campo Header per il token di autenticazione che protegge un'API?

5

Ho un'API da proteggere. Ci saranno potenzialmente due tipi di consumatori di questa API: la nostra applicazione per singola pagina e i servizi di terze parti che si integreranno con essa.

Ho letto che in generale i cookie non sono preferiti per le API REST, è meglio usare i campi di intestazione. Forse questa è solo una convenzione.

I cookie sicuri sono il posto migliore per conservare il token di autenticazione in una SPA. Impedisce loro di essere ottenuti da un attacco di script tra siti. Inoltre, se la SPA apre una nuova finestra / scheda, il sessionStorage non scorre attraverso, causando di nuovo l'accesso dell'utente. Puoi utilizzare localStorage, ma non è una buona idea conservare i token di autenticazione lì, poiché persiste.

Devo fare in modo che il filtro di autenticazione sul lato del server accetti un cookie o un campo di intestazione? Prova prima il cookie, e se non c'è, prova il campo dell'intestazione? I cookie verrebbero utilizzati dalle SPA e i campi di intestazione da altri utenti API. Oppure, sarebbe meglio utilizzare un solo modo per trasmettere il token di autenticazione?

    
posta user2800708 08.04.2016 - 17:16
fonte

1 risposta

2

Per la situazione che hai descritto, ti consiglio di trasmettere le informazioni di autenticazione solo nei cookie. Come hai detto, ciò impedisce l'esfiltrazione del token di autenticazione di un utente dall'applicazione per la singola pagina.

Come ulteriore vantaggio, il token di autenticazione come cookie semplifica la logica del tuo filtro di autenticazione, dal momento che c'è un solo posto da controllare.

Ricorda che se c'è un difetto XSS nella tua SPA, il malintenzionato JavaScript può ancora emettere richieste impersonando l'utente se usi i cookie o le intestazioni per il token di autenticazione. Quindi, per favore, disinfetti l'output: -)

    
risposta data 12.04.2016 - 09:37
fonte

Leggi altre domande sui tag