Ad esempio, consente di visualizzare un sistema di accesso comune per un sito Web
- La connessione HTTPS viene effettuata
- L'utente invia le credenziali tramite POST
- Il codice sul lato server esegue l'hashing della password e verifica se corrisponde al nome utente
- La sessione viene inizializzata e può essere emessa una chiave per accedere nuovamente senza password ("ricordami")
Questo è generalmente lo status quo in questo momento, dove le password sono tutte calcolate sul server. Ma, se facciamo la seguente parte del client, è considerata una cattiva pratica:
- La connessione HTTPS viene effettuata
- JavaScript calcola l'hash (potrebbe richiedere un utente specifico salt)
- Script invia AJAX con i valori utente / hash
- Il codice sul lato server controlla se l'hash e il nome utente della password corrispondono.
- La sessione viene inizializzata e può essere emessa una chiave per accedere nuovamente senza password ("ricordami")
Qualcuno può spiegare perché questo altro metodo è considerato una cattiva pratica per farlo CS invece di SS? Entrambi trasmettono su SSL, entrambi creano l'hash sicuro, ed entrambi gli autenticati dovrebbero essere considerati affidabili con codice ben scritto. Entrambi sono suscettibili di XSS e altri cattivi design.