Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14
  1. #11
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    48
    interessante.. In questi giorni cerco di concretizzare. Se non riesco ti posso chiedere una mano?

  2. #12
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    48
    cmq ho messo giu una classe
    Non basata sù ip e timestamps però. In quanto poco sicura per via della possibilità di modificare un ip durante la sessione

  3. #13
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Quote Originariamente inviata da phelps Visualizza il messaggio
    ...per via della possibilità di modificare un ip durante la sessione
    Cosa che comunque richiede del tempo e il problema in ballo era solo rallentare i tentativi, non la sicurezza.

  4. #14
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    48
    Codice PHP:
    <?php
    /**
     *
     */
    class Brute
    {

      const 
    LOCK_TRIES 3;
      const 
    LOCK_TIME 10;


      public static function 
    startLockOut()
      {
      
    $_SESSION['lock-time'] = date('Y-m-d H:i:s');
      }

      public static function 
    endLockOut()
      {
        if (!empty(
    $_SESSION['lock-time'])) {
          unset(
    $_SESSION['lock-time']);
        }
        if (!empty(
    $_SESSION['lock-tries'])) {
          unset(
    $_SESSION['lock-tries']);
        }
      }

      public static function 
    checkLockOutTime()
      {
        if (isset(
    $_SESSION['lock-time'])) {
          
    $current_time = new DateTime(date('Y-m-d H:i:s'));
          
    $wait_time = new DateTime($_SESSION['lock-time']);
          
    $wait_time->modify('+' self::LOCK_TIME ' minutes');
          if (
    $current_time $wait_time) {
            
    self::endLockOut();
            return 
    true;
          }else {
            return 
    false;
          }
        }
        return 
    true;
      }

      public static function 
    checkLockOutTries()
      {
        if (empty(
    $_SESSION['lock-tries'])) {
          
    $_SESSION['lock-tries'] = 1;
        } else {
          
    $_SESSION['lock-tries'] += 1;
        }

        if (
    $_SESSION['lock-tries'] > self::LOCK_TRIES) {
          
    self::startLockOut();
          return 
    false;
        } else {
          return 
    true;
        }
      }

    }
    le due funzioni checkLockOutTime() e checkLockOutTries() verranno richiamate in due variabili nella pagina di controllo login, se risulteranno true insieme al controllo di username e password, ok.... se risulteranno false bloccheranno per 3 tentativi e si sblocchera dopo 10 minuti e il display nella pagina di login sarà
    Codice:
    $tries = empty($_SESSION['lock-tries']) ? null : $_SESSION['lock-tries'];
    $time = empty($_SESSION['lock-time']) ? null : $_SESSION['lock-time'];
    $message = "User or Password Wrong ";
    $message2 = "Lock tries: $tries | lock time: $time";
    }

    se al terzo tentativo le credenziali sono tutte vere entrerà e se poi schiaccerò logout, nella classe Session alla funzione logout faccio unset di $_SESSION[look-tries]
    Ultima modifica di phelps; 21-12-2018 a 13:13

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.