java - domanda su GWT, cookie e regia delle pagine web




web-applications cookies (2)

Direi che hai quasi capito bene: D Ecco come gestisco login / logout nella mia applicazione:

  1. L'utente carica la pagina - se ha un set di cookie con un token (vedi i punti successivi per maggiori informazioni), invia quel token al server per verificare se è ancora valido. Se è valido, sei loggato, vai al punto 5. Vedi le note seguenti su come gestire un token non valido.
  2. L'utente inserisce la combinazione utente / passaggio. Questa informazione viene inviata al server (sarebbe meglio inviarla tramite una connessione crittografata, ma è difficile da ottenere con GWT, ad esempio, vedi questa domanda ).
  3. Il server controlla se la combinazione di hash utente / password (vedi sotto) corrisponde a ciò che è nel database / qualunque. In tal caso, genera un token (solo una stringa casuale piuttosto lunga, come un UUID ) e lo invia al client.
  4. Se l'utente ha selezionato la casella di controllo "Ricordami" durante l'accesso, memorizza il token in un cookie con una data di scadenza futura (fare riferimento ad altre guide / domande su quale sia il periodo di tempo consigliato).
  5. Quando il client riceve il token, dovrebbe utilizzarlo per ogni richiesta fatta al server che si desidera venga eseguita solo dagli utenti autenticati. Lì, il server controlla se il token è valido (devi tenere traccia di token (s) / coppie di utenti nel tuo DB) e in tal caso, autorizzare la transazione / qualunque. Ecco il trucco: se ti affidi solo al cookie, sarai vulnerabile a un attacco XSRF . Ecco perché è necessario passare anche il token (il cookie viene trasferito automaticamente - ecco perché è possibile un attacco XSRF) come parte della richiesta (lo sai, come un campo aggiuntivo in JSON o un campo in un POJO che invii tramite GWT- RPC o anche nell'intestazione HTTP).
  6. Nel logout esplicito (facendo clic sul collegamento "Disconnetti", ecc.), Invia al server una informazione che l'utente ha appena disconnesso. Il server dovrebbe quindi eliminare / invalidare il token. Dovrebbe farlo indipendentemente dall'opzione "Ricordami" - dal momento che il logout esplicito significa che l'utente vuole eliminare le informazioni di accesso su quel PC / browser e impedire ad altri di accedere come lui / lei. Se l'utente chiude il browser / pagina e hai impostato correttamente il cookie al punto 4 (ovvero, non scadrà alla chiusura del browser - di nuovo, solo se è stata selezionata l'opzione "Ricordami"), alla successiva visita il l'utente dovrebbe ottenere automaticamente il login al punto 1.

Alcune note aggiuntive

  • Questo è molto importante: ricorda di controllare sul lato server se il token passato attraverso il cookie è uguale a quello passato come parte della richiesta / payload.
  • Non memorizzare le password nel database come testo normale - memorizzare gli hash delle password. Usa BCrypt per la massima sicurezza. Ecco perché ho scritto che dovresti confrontare gli hash delle password , non le password effettive.
  • Quando il server incontra un token non valido, ciò può significare un numero di cose , dalla normale all'allerta. In generale, è consigliabile registrare queste situazioni e controllare regolarmente i registri per individuare eventuali attività anomale.
    1. L'utente non ha visitato il sito per un breve periodo di tempo e il token è scaduto . Assicurati di gestire correttamente la scadenza del token sul lato client (le date di scadenza corrette sui cookie dovrebbero comportare che l'utente venga reindirizzato alla pagina di accesso, senza inviare il token scaduto) e lato server (un'attività speciale che esegue la scansione giornaliera dell'elenco di token ed elimina il quelli scaduti?)
    2. Forse hai messo alcune altre restrizioni sulla convalida del token - come il token non può essere scaduto e il tentativo corrente deve provenire dallo stesso IP di quello per cui il token è stato originariamente generato.
    3. Si è verificato un errore durante l'invio della richiesta e si è verificato in modo errato / danneggiato: non è possibile fare molto, ma reindirizzare l'utente alla pagina di accesso
    4. Una terza parte sta tentando di accedere utilizzando un token artigianale . Se usi pedine stupidamente facili da indovinare (come basandoti sul nome utente, su rot13, su una propria "crittografia" super-speciale, ecc.), Prima o poi ti verrà morso. UUID è un esempio di buon candidato token - come suggerisce il nome, è un identificatore universalmente univoco - il che significa che due utenti non dovrebbero avere gli stessi UUID e gli UUID stessi sono casuali e lunghi.

La sicurezza nelle applicazioni AJAX è un'attività seria : ho visto troppe applicazioni Web con facilità di utilizzo dei buchi di sicurezza ... Assicurati di capire completamente cosa e perché stai facendo. Se avete domande, non esitate a chiedere :)

Aggiornamento 2015-06-12: GWT - Security RPC XSRF

sto usando gwt per creare un sito web. questa domanda riguarda una pagina di accesso e cookie per salvare i dettagli di accesso. GWT ti consente di creare un sito Web all'interno di una singola pagina web.

la mia applicazione funziona su una pagina web. Ho installato l'applicazione come, c'è una casella di login con un pulsante di accesso, e se i dettagli sono corretti caricherà l'interfaccia utente sottostante e rimuoverà la casella di login.

questo significa che ogni volta che aggiorno la mia pagina l'applicazione mi porta alla pagina di accesso. c'è comunque la possibilità di impostare un cookie che contenga le informazioni dell'utente ad esempio un giorno, che inserisca i dettagli nella casella di accesso e acceda automaticamente,

inoltre, il pulsante di disconnessione all'interno dell'applicazione Web rimuove le informazioni contenute nel cookie e ti indirizza alla pagina di accesso (rimuovi le informazioni sui cookie e ti indirizza alla parte di accesso della pagina Web).

o ci sarebbe un approccio diverso.


Here puoi trovare alcune informazioni sulla sicurezza dell'accesso a GWT. C'è anche una sezione su come usare i cookie per ricordare che un utente ha effettuato l'accesso.





cookies