Accesso agli utenti automaticamente su un sito Web

1

Sto creando un sito Web con una funzione estesa per i forum, in cui gli utenti possono accedere, pubblicare commenti, ecc. Sto facendo la funzione in cui il sito memorizza i cookie sul tuo computer così la prossima volta che visiti il sito web, ti registra automaticamente.

Ho sentito di non memorizzare nome utente e password espliciti in un cookie. Così ho deciso di memorizzare l'ID utente nel mio database come valore del cookie. In sostanza, tutte le informazioni quando si utilizza il sito possono essere ottenute interrogando nuovamente il database con questo ID utente.

Poi ho appena realizzato che se modifichi manualmente il tuo cookie e inserisci un ID utente casuale, chiunque sarebbe in grado di accedere a qualsiasi account! È possibile accedere a tutte le funzioni del sito Web come nuovi commenti, nuovi argomenti, ecc. Semplicemente fornendo l'ID utente.

Qual è il modo corretto per consentire agli utenti di accedere automaticamente al mio sito senza esporlo in modo che chiunque possa accedere?

    
posta l3utterfly 27.08.2014 - 06:03
fonte

1 risposta

3
  1. Crea un token casuale crittograficamente sicuro e associalo con l'id utente nel tuo DB
  2. Esegui un HMAC sul token
  3. il valore del cookie sarà quindi token + HMAC

In questo modo un utente malintenzionato dovrebbe conoscere la tua chiave HMAC per forzare il token e ciò non è possibile.

Per convalidare il cookie estrarre prima l'HMAC, convalidare l'autenticità del token e quindi controllare il database ed estrarre l'id utente ad esso associato. Dopo alcune convalide HMAC fallite, puoi bloccare l'utente poiché nemmeno una convalida HMAC dovrebbe fallire e significa che qualcuno sta tentando di attaccarti.

È importante mantenere la sicurezza del cookie:

  1. Imposta il flag HttpOnly su true - quindi non è possibile accedere ai cookie da javascript
  2. Imposta il flag di sicurezza su true - quindi i cookie verranno trasmessi solo tramite https e non potranno essere registrati sulla rete
  3. Imposta un tempo di scadenza ragionevole per il cookie in modo che l'utente non rimanga connesso per sempre
  4. Imposta il dominio dei cookie per assicurarti che non venga divulgato a nessun sottodominio in cui non intendi che vada
risposta data 27.08.2014 - 08:46
fonte

Leggi altre domande sui tag