Quindi stiamo pianificando di aggiungere una funzione alla nostra app che sia simile a ciò che fa Google, ma un po 'più severa:
- Hai un elenco di sessioni collegate a un agente utente e un indirizzo IP (?) (google mostra una posizione)
- 2FA è necessario solo quando tenti di accedere da un dispositivo che non è stato approvato negli ultimi 30 giorni.
- Se viene effettuato un tentativo di accesso da un nuovo accoppiamento user-agent / IP, vorremmo inviare un link con un token al loro indirizzo email per approvare l'accesso.
- Quando fanno clic sul link, se 2FA è attivo, chiederemo a 2FA di approvare il login.
Alcune cose di cui ci stiamo chiedendo:
- Facendo intervenire l'utente per approvare gli accessi, piuttosto che Google, dove ti dice solo il login ... speriamo di prevenire un numero maggiore di accessi non autorizzati. (Attualmente inviamo una mail ogni volta che l'utente esegue il login e diciamo loro l'user-agent e la regione.)
- Richiedendo a 2FA di utilizzare il collegamento, ci auguriamo di proteggere ulteriormente il login non autorizzato (mentre è possibile reimpostare la password con l'accesso alla posta elettronica, è necessario l'autenticazione 2FA prima di poter accedere alla pagina per inserire la nuova password dopo aver fatto clic sul link di ripristino. )
- La nostra più grande preoccupazione è che non commettiamo accidentalmente qualche errore e che un utente dovrà saltare questo anello un miliardo di volte nella stessa sessione perché il suo gestore di telefonia mobile sta passando il proprio IP costantemente ... ecc. ecc.
Quindi mi viene l'idea che la restrizione basata su IP non sia probabilmente troppo buona ... quindi forse cercare la regione via IP e solo autorizzare la regione? Ma poi un hacker potrebbe facilmente rovinare l'user-agent e usare un proxy.
Nota: capisco che questo non è il nostro stop-tutto per la sicurezza, ma vorremmo aggiungere questo livello per ridurre le istanze di accesso non autorizzato.
La mia domanda: quale modello generale per la restrizione sessione / login avrà un buon equilibrio tra "impedire a newb hacker / jerks di accedere come quando hanno indovinato la tua password / phishing" e "non infastidire l'utente tutto il tempo con collegamenti di posta elettronica "?