No, non è possibile utilizzare JavaScript del browser per migliorare la sicurezza delle password. Ti consiglio vivamente di leggere questo articolo . Nel tuo caso, il problema più grande è il problema dell'uovo di gallina:
Qual è il "problema dell'uovo di gallina" con la distribuzione della crittografia Javascript?
Se non ti fidi della rete per fornire una password o, peggio, non ti fidi del server per non mantenere i segreti degli utenti, non puoi fidarti di loro per fornire il codice di sicurezza. Lo stesso malintenzionato che stava sniffando password o leggendo diari prima di introdurre la crittografia sta semplicemente dirottando il codice crittografico dopo che lo hai fatto.
[...]
Perché non posso utilizzare TLS / SSL per fornire il codice crittografico Javascript?
Puoi. È più difficile di quanto sembri, ma trasmetti in modo sicuro la crittografia Javascript a un browser utilizzando SSL. Il problema è che, avendo stabilito un canale sicuro con SSL, non hai più bisogno della crittografia Javascript; hai una crittografia "reale".
Il che porta a questo:
Il problema con l'esecuzione di codice crittografico in Javascript è che praticamente qualsiasi funzione da cui dipende la crittografia potrebbe essere sovrascritta silenziosamente da qualsiasi contenuto utilizzato per costruire la pagina di hosting. La sicurezza crittografica potrebbe essere annullata nelle prime fasi del processo (generando numeri casuali fasulli o manomettendo le costanti e i parametri utilizzati dagli algoritmi), o successivamente (inviando materiale chiave a un utente malintenzionato), o --- nello scenario più probabile --- bypassando completamente la crittografia.
Non esiste un modo affidabile per qualsiasi pezzo di codice Javascript per verificare il proprio ambiente di esecuzione. Il codice crittografico Javascript non può chiedere: "Ho davvero a che fare con un generatore di numeri casuali o con qualche facsimile fornito da un aggressore?" E certamente non può affermare "a nessuno è permesso fare nulla con questo segreto crittografico se non in modi che io, l'autore, approvo". Queste sono due proprietà che spesso vengono fornite in altri ambienti che utilizzano la crittografia e sono impossibili in Javascript.
Fondamentalmente il problema è questo:
- I tuoi clienti non si fidano dei tuoi server, quindi vogliono aggiungere un codice di sicurezza extra.
- Quel codice di sicurezza viene fornito dai tuoi server (quelli di cui non si fidano).
O in alternativa,
- I tuoi clienti non si fidano di SSL, quindi vogliono che tu usi un codice di sicurezza aggiuntivo.
- Quel codice di sicurezza viene fornito tramite SSL.
Nota: Inoltre, SHA-256 non è adatto a questo, dal momento che è così facile forzare le password non salate e non iterate . Se decidi di farlo comunque, cerca un'implementazione di bcrypt , scrypt o PBKDF2 .