Immagina la situazione:
- L'applicazione potrebbe o potrebbe non essere eseguita tramite SSL / TLS
- L'applicazione non dovrebbe conoscere la password del client perché il client potrebbe riutilizzare le password
Non avrebbe quindi combinato l'hashing della password lato server e lato server al meglio?
Come funzionerebbe la creazione della password:
- L'utente inserisce la password in un campo.
- Local javascript hash la password con il nome utente fornito con
- Questo dato hash viene trasmesso via rete al server.
- Il server aggiunge salt all'hash generato in modo casuale e rehashes entrambi in un nuovo hash. Questo nuovo hash e il sale casuale sul lato server sono memorizzati
Come funzionerebbe il login:
- L'utente inserisce la password in un campo.
- Il valore del campo "login" è preso come hash di calcoli javascript salt e local side.
- Questo hash viene trasmesso sulla rete al server
- Il server prende il sale memorizzato per quell'utente, combina l'hash con il sale e lo blocca.
- Il server confronta il nuovo hash con l'hash memorizzato, se le corrispondenze, l'utente ha effettuato correttamente l'accesso. Se non corrispondono, all'utente viene negato l'accesso.
Quale sarebbe lo svantaggio di questo approccio rispetto all'approccio standard con la trasmissione di password in chiaro su Internet e quindi l'hashing e l'archiviazione sul server?