Questa potrebbe sembrare una domanda stupida, ma pensavo che fosse un'opzione extra (che non è necessaria) principalmente per utenti esperti, che vogliono proteggere ancora di più i loro account. Consente di considerare che esistono altre misure di sicurezza (ad esempio, la protezione contro gli attacchi di forza bruta on-line, che richiedono una password forti al momento della registrazione / aggiornamento della password, che avvisa l'utente di eventuali tentativi di login falliti, che richiede alcune informazioni in più quando logining in da IP sconosciuto o tra due posizioni di distanza entro un breve periodo di tempo, mostrando l'elenco delle sessioni attive (come in gmail), l'autenticazione a 2 fattori ecc.). Quindi, è come provare ad aggiungere ulteriore livello di sicurezza.
Ecco l'idea. Quando l'utente attiva questa opzione di sicurezza, deve scegliere il tipo di variabile che dovrebbe concatenare alla sua password abituale quando prova ad accedere. Per esempio. l'utente può scegliere la corrente (giorno + 7). Quindi, se la mia password è myPassword
, e la data odierna è 11, allora devo digitare myPassword18
. Il che significa che se devo effettuare il login in un altro giorno dovrò inserire un'altra password "totale" - basata su quel giorno. Ovviamente la data è un esempio, può essere di tipo diverso, ad es. le prime 3 lettere del mio attuale indirizzo IP (nel caso in cui l'utente acceda spesso da postazioni diverse), forse smth associato a un browser (e / o alla sua versione), quindi l'idea è di avere smth che cambia costantemente, ma il l'utente può facilmente identificare quel cambiamento e fare il giusto input.
Anche se questo creerà problemi con il completamento automatico della password del browser, ma chi non ha bisogno di tale completamento automatico, suppongo che non sarà un problema da quel punto di vista.
Convalida della password dell'utente durante il login: Sto utilizzando l'hashing / convalida della password come descritto qui link
così, la parte di hashing sembra senza problemi, e sto tritando solo la parte myPassword
del corso. Durante la convalida quando vado a prendere i dati dell'utente dal database posso controllare e vedere che questa opzione è abilitata, e in base alla scelta dell'utente posso calcolare quello che dovrebbe essere concatenato con la password "principale", in modo che sarà controllato e se valido , verrà tagliato dalla stringa per convalidare la password.
- Se l'opzione di sicurezza è disabilitata sarà una normale convalida della password
- Se abilitato, diciamo che l'utente ha scelto l'opzione corrente (giorno + 7), quindi so che la password dovrebbe terminare con 18, in caso contrario - quindi l'accesso non è riuscito. Se è corretto, cancellerò quel
18
dalla password fornita dall'utente e controllerò la validità della stringa rimanente confrontandola con l'hash della password che è stata recuperata dal db.
Ammetto che nel complesso questo rende il processo di login più complesso (che è male), ma d'altra parte credo che potrebbe essere utile se qualcuno ha visto la password (direttamente o forse tramite keylogger, o solo quando si accidentalmente cliccato Salva in un computer non attendibile), perché la prossima volta che la parte variabile (possibilmente) verrà modificata e che l'ultimo numero / stringa sarà già smth, e se l'utente malintenzionato ha tentato l'accesso, il proprietario dell'account verrà avvisato che qualcuno ha provato per effettuare il login da qualsiasi ip / posizione, fornendo una password valida (la prima parte), pur non fornendo il secondo parametro corretto (parte variabile), che potrebbe aiutare l'utente a cambiare la password "principale" e / o la parte variabile della password .
Qualche idea se questo potrebbe aumentare la sicurezza o ci sono alcuni difetti che non ho considerato che avranno l'effetto opposto?
Grazie