è proprio così
md5 se utilizzato solo lato server evita di tenere le password in chiaro nel db ma non evita il passaggio in chiaro client>server
un metodo efficace è sviluppare una challenge in JavaScript (lato client)
ovviamente il sistema deve funzionare sia con che senza
con il passaggio della password è SEMPRE cifrato (escluso durante la registrazione)
senza il passaggio della password è SEMPRE in chiaro
il sistema non è complesso
tramite js eviti che la form venga inviata e cominci una serie di botta e risposta col server (tramite XMLHTTP, ajax per intenderci)
client > inizio autenticazione (invia username)
server > invia un salt (una stringa alfanumerica casuale) e la salva nel db
client > fa md5(md5(password)+salt) e invia il tutto al server
server > fa md5(password_nel_db_già_in_formato_md5+salt_salvat o_nel_db) e verifica siano uguali (se lo sono accetta l'autenticazione)
client > riceve risposta negativa positiva e si comporta di conseguenza
se js è disattivato user e password vengono inviati tramite la form in chiaro
---
se ti interessa durante agosto pubblicherò un articolo completo sull'argomento con esempio pratico
domani parto per le vacanze, spero comunque di averti dato abbastanza spunti
ciao