Sicurezza con applicazione per pagina singola

1

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à.

  1. L'app client invia ID utente, password al server.
  2. Server convalida la richiesta e genera il token che verrà memorizzato in db.
  3. Questo token = userId + numero casuale + TimeStamp
  4. Il token
  5. tornerà alla APP del cliente.
  6. l'APP client la memorizzerà nella memoria locale o nel cookie.
  7. Con ogni richiesta successiva convaliderò il token con un negozio in db.

Aree problematiche

  1. Dove deve essere memorizzato il token? Cookie o archiviazione locale?
  2. Sul server, il token deve essere memorizzato da qualche parte. Se memorizzato in db aumenterà il carico su DB.
  3. Dato che userò la richiesta AJAX, come dovrei passare il valore del token Intestazione o corpo?
  4. Dato che questo stesso codebase userò anche per il mio sito web, quanto è sicuro questo approccio per il sito web?
  5. 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.

    
posta Dhiren Patel 07.07.2014 - 10:35
fonte

1 risposta

1

Suggerirei di utilizzare OpenID per l'autenticazione. In questo modo non devi gestire l'autenticazione e la memorizzazione / manutenzione delle credenziali dell'utente nel tuo DB.

per quanto riguarda CSRF, con angolare è semplice. Angular ha un meccanismo integrato che cercherà un token CSRF in un cookie specifico e lo invierà come intestazione http in ogni richiesta effettuata con il modulo $ http di Angular. Ciò che il tuo back-end deve fare è compilare (una volta per sessione) il cookie con un token casuale crittograficamente sicuro (Angular consiglia un digest del token di autenticazione utente con un salt) e quindi convalidare la correttezza dell'header http su richiesta nell'API REST .

    
risposta data 07.07.2014 - 12:49
fonte

Leggi altre domande sui tag