Visualizzazione risultati 1 fino 5 di 5

Discussione: Come contare i login errati?

  1. #1
    goodstone non è connesso Neofita
    Data registrazione
    01-05-2007
    Messaggi
    5

    Predefinito Come contare i login errati?

    Ciao a tutti,
    nel mio sito web ho progettato un piccolo sistema per evitare che altre persone entrino in un'area che ritengo riservata.
    Ho scritto quindi uno script in PHP che verifica se l'utente ha le credenziali corrette per accedere.

    Il punto è il seguente: vorrei fare in modo che un utente non abbia a disposizione più di 3 tentativi per accedere, quindi ad ogni login non corretto dovrei salvare il suo indirizzo IP al fine di contare il numero di login sbagliati.
    La domanda è: qual è il suo IP?

    Leggo in giro per il web che le tre variabili che cito qui di seguito non sono sicure perchè sono maneggiabili.
    Codice:
    $_SERVER["REMOTE_ADDR"]
    $_SERVER["HTTP_CF_CONNECTING_IP"]
    $_SERVER["HTTP_X_FORWARDED_FOR"]
    Quindi come recuperare l'indirizzo IP reale dell'eventuale utente che sta forzando il login?

    Grazie mille.

  2. #2
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,997

    Predefinito

    Salve,
    per password sicure, può usare password_hash();

    Inoltre guardi questa guida: autenticazione sicura con php

    Per recuperare l'ip di un utente, può fare qualcosa come questo:
    Codice PHP:
    function GetIP() {
    if(isset(
    $_SERVER['HTTP_CF_CONNECTING_IP']) && !empty($_SERVER['HTTP_CF_CONNECTING_IP']))
    {
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
    elseif(isset(
    $_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
    if(isset(
    $_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR']))
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
    }
    return
    $ip;
    }
    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 31-12-2020 alle ore 03.20.38

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    In generale non è mai una buona idea affidarsi (solamente) al controllo dell'IP: riavviando il router o cambiando connessione, il malintenzionato può eludere questo tipo di controllo.
    Tra l'altro ora con le norme della privacy non è nemmeno una buona idea salvare per intero gli IP: dovresti informare i visitatori di questo.

    Un modo più furbo può essere quello di salvare in una tabella gli ultimi n (3?) tentativi di login falliti, se tutti e tre sono stati fatti in un certo tempo (nell'ultima ora?) allora hai la condizione.

    Prendendo alla lettera invece la tua richiesta (senza vincoli di tempo etc):
    vorrei fare in modo che un utente non abbia a disposizione più di 3 tentativi per accedere
    Semplicemente è sufficiente aggiungere una colonna nella tabella degli utenti incrementare il numero ad ogni tentativo di login fallito (magari azzerare il valore al login corretto).

    Ciao!

  4. #4
    goodstone non è connesso Neofita
    Data registrazione
    01-05-2007
    Messaggi
    5

    Predefinito

    Grazie mille ad entrambi per le proposte e per le spiegazioni.

    In qualsiasi caso, per chiarezza, non intendevo bloccare solo i clienti che sbagliano password per 3 volte, ma i malintenzionati che mettono username e password a caso, mettendo di fatto in atto un attacco brute-force.
    Ultima modifica di goodstone : 31-12-2020 alle ore 20.41.14 Motivo: Spiegazione aggiuntiva.

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    In tal caso, ti consiglierei di inserire un recaptcha.

    Ciao!

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •