Buongiorno a tutti,
sto sviluppando un piccolo sistema di accesso ad un'area riservata.
Come classico c'è un form e ci sono due campi username e password con un tasto invia.
codice:
<form action="login.php" method="post" id="login">
Username
<input name="username" type="text" autocomplete="off" data-validation="length" data-validation-length="min5" data-validation-error-msg="Username troppo corto.">
Password
<input name="pass" type="password" autocomplete="off" data-validation="length" data-validation-length="min5" data-validation-error-msg="Password troppo corta.">
<button type="submit" onclick="formhash(this.form, this.form.pass);">Log-in</button><button type="reset">Reset</button></form>
Di seguito lo script di Jquery validator per compiere una piccola validazione sui dati inseriti:
codice:
<script>
$.validate({
form : '#login',
validateOnBlur : false
});
</script>
La funzione formhash invece è cosi definita e permette di calcolare l'hash della password in locale sul client per non trasmetterla in chiaro sul server: Essa crea un campo password nuovo e nascosto inserendo l'hash della password e cancellando il campo originario con la password in chiaro.
codice:
function formhash(form, clearpass) {
// Crea un elemento di input che verrà usato come campo di output per la password criptata.
var p = document.createElement("input");
// Aggiungi un nuovo elemento al tuo form.
form.appendChild(p);
p.name = "password";
p.type = "hidden"
p.value = hex_sha512(clearpass.value);
// Assicurati che la password non venga inviata in chiaro.
clearpass.value = "";
// Come ultimo passaggio, esegui il 'submit' del form.
form.submit();
}
Ora: quando premo sul pulsante submit lo script validator esegue molto bene il suo lavoro avvisandomi con mezzi impostati se sia l'username che la password sono troppo corti.
Se la lunghezza va bene interviene la funzione di hash che tuttavia cancella il valore del campo passw creandone uno nascosto con l'hash della password. Trovando l'errore ora lo script validator non invia il post.
Come posso far coesistere le due funzioni? Ossia:
Il validator deve verificare la lunghezza e permettere l'invio del form solo quando essa è corretta.
Successivamente la funzione di hash deve creare un campo nascosto e cancellare il valore del campo pass per evitare di trasmettere la password in chiaro.
Ho pensato di sostituire il contenuto del campo pass con una stringa casuale che rispecchi comunque la lunghezza ma non mi sembra una soluzione elegante.
Grazie!