Ho quasi finito di sviluppare il mio sistema di login e c'è ancora una cosa di cui non sono sicuro. Così tanti dibattiti che ho trovato su internet sul conteggio degli accessi non validi e l'account degli utenti bloccati. Il mio sistema memorizza i nomi utente e le password (che sono salati [per ogni utente diverso sale] e hash) nel database. Se l'utente inserisce un nome utente o una password non validi, tengo traccia dei loro Username, Password, LoginTime, SessionID, IP e Browser. Ecco un esempio:
LoginID LoginTime LoginUN LoginPW LoginSessionID LoginIP LoginBrowser
1 2018-03-15 13:40:25.000 jpapis test E72E.cfusion 10.18.1.37 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
98 2018-03-15 13:48:45.000 mhart mypass55 E72E.cfusion 10.12.1.87 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
32 2018-03-15 14:29:14.000 skatre 1167mmB! 378E.cfusion 10.36.1.17 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Mi chiedo se dovrei bloccare l'account dopo i tentativi di X? Se sì, quale sarebbe la migliore pratica per farlo? Ecco un approccio che ho trovato:
SELECT COUNT(LoginID) AS countID, DATEDIFF(mi,LoginTime,GETDATE ( )) AS TimeElapsed
FROM FailedLogins
WHERE (LoginUN = '#username#' OR LoginSessionID = '#SESSION.sessionid#' OR LoginIP = '#REMOTE_ADDR#')
AND DATEDIFF(mi,LoginTime,GETDATE ( )) <= 60
GROUP BY LoginID, LoginTime
HAVING COUNT(LoginID) >= 5;
Query sopra cercherà username, sessionID o indirizzo IP. Se uno di questi è trovato nella tabella FailedLogin entro 60 minuti ed è maggiore di 5, bloccherei l'account. L'unico problema qui è che non sono sicuro di cosa ciò possa impedire, l'attacco di forza bruta può inviare troppi tentativi in 60 minuti, quindi non sono sicuro di quale sarebbe il vantaggio di controllare gli accessi non riusciti in questo modo. C'è un modo migliore per gestire gli accessi non riusciti ora? Devo anche bloccare l'account? Se qualcuno può fornire alcuni pensieri ed esempi, per favore fatemelo sapere. Inoltre voglio condividere alcuni dettagli sul sistema. Non abbiamo transazioni di denaro nel sistema o legate ad account utente. Disponiamo di informazioni sensibili nel sistema ed è per questo che vorrei implementare funzionalità di sicurezza per impedire agli hacker di cercare di infrangere la password con alcune tecniche di hacker. Grazie.