Il problema di trasmettere in modo sicuro un nome utente e una password è un problema risolto, HTTPS è elegante e funziona bene.
In termini di questa proposta è significativamente meno sicuro di HTTPS, perché questo sistema proposto è vulnerabile a un attacco di riproduzione. A chi importa cosa siano effettivamente il nome utente e la password, se accedi solo con hash(user+password)
, allora questo è l'unico valore che l'attaccante deve sapere.
Le risposte di sicurezza basate su hash sicuro solitamente innovano un nesso di causalità in cui il server fornisce al client un nonce e quindi viene utilizzato hash(nonce+hash(password))
. Il nonce può mai essere riutilizzato, NTML di Microsoft ha avuto questo problema "risolto" più di una volta.
Dopo aver effettuato l'accesso con nome utente e password, devi ancora proteggere l'ID di sessione, che è il token di autenticazione citato dal browser per mantenere lo stato autenticato, quindi HTTPS è una buona soluzione anche per questo.