Javascript Password Security [chiuso]

1

Ho difficoltà con la risposta fornita qui , ma non riuscivo a capire come implementarlo. Il mio codice è praticamente identico:

<script language="javascript">
  function check(form) {
    if(form.userName.value == "User" && form.userPass.value == "averyobviouspassword") {
      window.open('testok/menu.html')
    }
    else {
      alert("Wrong Password Or Username")
    }
  }
</script>

Il problema con questo è, se si dovesse ispezionare l'elemento sulla pagina, è possibile vedere chiaramente la password. Non sto cercando altre soluzioni come un database SQL, perché questo è solo un sito Web di test. La soluzione che pensavo potesse funzionare era questa:

if(hash(enteredPassword) == storedHash)

Non so come implementarlo.

    
posta Stephen 01.08.2015 - 01:24
fonte

3 risposte

5

In realtà le pagine di accesso con JavaScript non sono consigliabili. È completamente non protetto. La maggior parte delle pagine di accesso sono eseguite sul lato server utilizzando PHP, ASP.NET, Node.Js, ecc. E non nel lato client, il cui codice è visibile agli utenti.

    
risposta data 01.08.2015 - 04:17
fonte
2

Ti consiglio di scoraggiarti dal fare ciò in JavaScript dal lato client.

Anche se è solo per scopi di test e di apprendimento, è una pratica molto (molto) cattiva! Quello che stai cercando di fare è, nella migliore delle ipotesi, la verifica lato client.

Immagina i seguenti scenari quando non stai usando il codice lato server per la verifica: Qualcuno sta semplicemente rimuovendo questa funzione js quando visita il tuo sito web (test). Ora tutta la tua sicurezza è sparita. Beh, non era lì in primo luogo.

Ora alla tua domanda. Se in realtà si desidera utilizzare questo e non avere una password in chiaro, si vorrà hash e aggiungere sale e pepe. Dovresti usare una funzione di hashing che è difficile da forzare (qui ci sono alcuni esempi link )

Questa è anche una pratica standard per la memorizzazione di password nel database.

Qui puoi vedere lo stesso problema con il tuo tentativo in js. Anche se si crea l'hash e l'utente non può capire la password in tempi ragionevoli, non c'è sicurezza. Può ancora cambiare il js.

Un problema simile si verifica quando hai l'idea di inviare semplicemente l'hash al server (senza TLS), ancora una cattiva idea (dai un'occhiata qui link )

Quindi, anche se si tratta di test, per motivi di buona pratica, non farlo. Non imparerai nulla di prezioso da questo.

Ci sono molti altri argomenti in cui JavaScript è uno strumento eccellente per fare le cose. Questo non è uno di questi.

    
risposta data 01.08.2015 - 13:53
fonte
0

I commenti precedenti sono tutti validi - ma se stai solo cercando di fare un po 'di offuscamento, puoi usare le funzioni di conversione base64 atob() e btoa() . Vedi sotto:

<script language="javascript">
  function check(form) {
    if(form.userName.value == "User" && atob(form.userPass.value) == "j÷«Êﬥ«,ÂÝ") {
      window.open('testok/menu.html')
    }
    else {
      alert("Wrong Password Or Username")
    }
  }
</script>

Questo usa ancora la tua password originale "averyobviouspassword".

    
risposta data 06.12.2015 - 07:20
fonte

Leggi altre domande sui tag