Sto creando un'applicazione SPA usando Angular. Questo servirà ai miei due scopi per il livello intermedio sul sito mobile e sul sito web.
Ora sto provando a proteggere la mia applicazione da XSS, CSRF e volevo anche un meccanismo di autenticazione sicuro. I miei servizi saranno servizi stateless resful.
Questo è il flusso che penso mi aiuterà.
- L'app client invia ID utente, password al server.
- Server convalida la richiesta e genera il token che verrà memorizzato in db.
- Questo token = userId + numero casuale + TimeStamp Il token
- tornerà alla APP del cliente.
- l'APP client la memorizzerà nella memoria locale o nel cookie.
- Con ogni richiesta successiva convaliderò il token con un negozio in db.
Aree problematiche
- Dove deve essere memorizzato il token? Cookie o archiviazione locale?
- Sul server, il token deve essere memorizzato da qualche parte. Se memorizzato in db aumenterà il carico su DB.
- Dato che userò la richiesta AJAX, come dovrei passare il valore del token Intestazione o corpo?
- Dato che questo stesso codebase userò anche per il mio sito web, quanto è sicuro questo approccio per il sito web?
- Come affrontare l'attacco CSRF in questo caso?
Ho indicato Protezione di una singola pagina JavaScript con backend RESTful anche. Ma la memorizzazione dell'ID utente in un nuovo cookie creerà un buco di sicurezza. Perché sia userid che token sono archiviati sul lato client.