[PHP] Verifica password per accesso ad area riservata

Discussione in 'PHP' iniziata da gandalf1959, 15 Giugno 2019.

  1. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    193
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    Buongiorno,
    rieccomi qui. Sto aggiornando un po' di pagine per aggiornare tutto da MySql a MySqli.
    Nel frattempo ho cambiato la codifica delle password degli utenti autorizzati ad accedere all'area riservata.
    Nel codice scritto un paio di anni fa la codifica era sha1, adesso ho inserito alcuni utenti utilizzando password_hash.
    Risultato: nella tabella con gli utenti in questione alcune password sono codificate in un modo, altri in un altro.
    Allora ho cambiato il file di verifica che viene richiamato dopo aver inserito le credenziali di accesso con un doppio controllo.
    Però non funziona con le nuove password (quelle inserite con password_hash).
    Questa è la pagina di verifica:

    PHP:
    <?php session_start();

    include 
    'connect3.php';


    $username $_POST['username'];
    $pwd $_POST['password'];

    //sha1 cifra la password anche qui in questo modo corrisponde con quella del db
    $password sha1($pwd);

    // qui invece ricavo la password con la nuova codifica
    $hashedpassword password_hash($pwdPASSWORD_DEFAULT);



    if (!
    $result $connessione->query("SELECT * FROM utentibo WHERE userName = '$username' AND (password = '$password' OR password = '$hashedpassword')")) {
      echo 
    "Errore della query: " $connessione->error ".";
      exit();
    }else{
        
    // echo "e qui ancora bene"."<br>";
      // conteggio dei record
      
    if($result->num_rows 0) {
        
    // conteggio dei record restituiti dalla query
        
    while($row $result->fetch_array(MYSQLI_ASSOC))
        {
          
    $cod $row['userName'];
          
    //$unico = $row['unico'];
          
          
    if ($cod == "") {
              
    $trovato 0;
          }else{
    $trovato 1;}

          
    /* Username e password corrette */
            
    if($trovato === 1) {
     
             
    /*Registro la sessione*/
            
    $_SESSION['autorizzato'];
     
            
    $_SESSION["autorizzato"] = sha1($cod $unico);
     
            
    /*Registro il nome dell'utente*/
            
    $_SESSION['cod'] = $cod;
     
             
    /*Redirect alla pagina riservata*/
            
    echo '<script language=javascript>document.location.href="partenza.php"</script>';
     
            } else {
     
            
    /*Username e password errati, redirect alla pagina di login*/
            
    echo '<script language=javascript>document.location.href="index.php"</script>';
     
            }
        }
        
    // liberazione delle risorse occupate dal risultato
        
    $result->close();
      }
    }
    // chiusura della connessione
    $connessione->close();



    ?>
    Ovviamente qualcosa non va in quanto tutto si ferma su questa pagina senza alcun redirect...

    Dove sbaglio?
    Grazie
    Maurizio
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    870
    Mi Piace Ricevuti:
    45
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Fai un doppio controllo, se hai un sistema ibrido..... controlla il match sia in sha1 che con password_hash.... Se trovi alemeno 1 record allora hai fatto bingo!
     
    Ultima modifica: 16 Giugno 2019
  3. Ettore Caputo

    Ettore Caputo Nuovo Utente

    Registrato:
    16 Giugno 2019
    Messaggi:
    2
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    @gandalf1959
    Io penso che il tuo problema non stia nella logica del codice, quindi prova a cambiare la tua riga di codice:
    Ed anche:



    Con :
    Codice:
    header("Location: tuapagina.php") ;
    Prova e fammi sapere.
     
  4. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.502
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    credo che tu debba verificare la password leggendola dal db e confrontando le due stringhe con la funzione password_verify
    generata nuovamente ogni volta, come fai nello script, differisce perché cambiano i parametri di generazione

    ti conviene cambiare la logica, leggi dal db e confronti le psw ottenute ciascuna con il metodo specifico
     
    Ultima modifica: 16 Giugno 2019
Sto caricando...

Condividi questa Pagina