Invio di nome utente e password in ogni richiesta dall'app per iPhone

2

Sto scrivendo un'app mobile e amp; servizio web combo che richiede l'accesso dell'utente. Il servizio web utilizzerà SSL, quindi ci sono dei motivi per non inviare il nome utente e la password in ogni richiesta web?

So che alcuni siti generano un token dopo che l'utente ha effettuato l'accesso, che possono usare per l'autenticazione, ma il token sembra equivalente alla coppia nome utente / password - quindi non sono sicuro che ci sia molto da fare.

Sto per commettere un grosso errore in termini di sicurezza?

    
posta Wilka 14.03.2011 - 18:13
fonte

2 risposte

10

L'errore maggiore che stai facendo è aumentare l'opportunità di afferrare quella coppia nome utente / password. Persino il modo in cui funziona SSL, una volta che l'autenticazione è stata stabilita, si negozia una chiave di sessione per la collaborazione attuale.

Il tasto di sessione è un concetto molto importante, in quanto può aiutare a determinare quale sia una sessione valida o meno. Prendiamo ad esempio il seguente scenario:

  • L'utente accede a una macchina, fa alcune cose e quindi deve lasciarlo. Stupido, ha dimenticato di bloccare il terminale e la sessione è ancora attiva.
  • L'utente effettua l'accesso su un secondo computer e aggiunge altro materiale.
  • Un utente malvagio incappa sulla prima macchina e prova a fare cose.

Se si utilizza la combinazione nome utente / password per ogni richiesta il server non in grado di rilevare quale macchina è che - in particolare se sono dietro lo stesso firewall / gateway. Usando una chiave di sessione negoziata ogni volta che l'utente accede il server può rilevare quale sessione è quale. Infatti, quando viene implementato correttamente, la vecchia chiave di sessione viene invalidata in modo che eventuali richieste future che utilizzano quella chiave di sessione non riescano.

Per le chiavi di sessione assicurati che si applichino le seguenti condizioni:

  • È univoco per ogni combinazione di nome utente / password
  • È univoco per ogni sessione autenticata
  • Le vecchie chiavi di sessione sono invalidate e non più utilizzate. (il riciclaggio è OK solo quando i meccanismi di sessione del client falliranno comunque. I.e il cookie scade e la sessione del server scade).

Questo consente all'utente di passare da una macchina all'altra (la registrazione in acqua dolce su ogni macchina), mentre si fa la vostra diligenza per evitare che qualcuno rubare la loro sessione.

    
risposta data 14.03.2011 - 18:25
fonte
1

Di solito il token è un hash md5 creato dal nome utente, dalla password, da una frase nascosta ea volte dalla data.

I token sono più sicuri e non possono essere intercettati, specialmente se vengono riemessi con ogni impressione di pagina, poiché la frase nascosta potrebbe essere l'ultimo campo visto dal database utente che viene aggiornato su ciascuna impressione, quindi è un'autenticazione rolling.

    
risposta data 14.03.2011 - 18:20
fonte

Leggi altre domande sui tag