Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    28

    problema password sha1()

    qualcuno mi sa spiegare perché una volta che l utente si è iscritto e registrato con username e relativa password criptata con sha1()... al momento del login lo lascia accedere anche se inserisce una password a casaccio??
    vi posto qui il codice del log-in:

    <?php
    //connessione e selezione del database
    $connessione=mysql_connect("localhost","root","roo t");
    mysql_select_db("sito",$connessione);


    //definisco la query di controllo
    $query=strtolower("SELECT users.password FROM users WHERE users.username='{$_REQUEST["username"]}' ");

    //eseguo la query
    $risultato=mysql_query($query,$connessione);




    //acquisisco username e password che mi serviranno più avanti
    $username=$_REQUEST["username"];
    $password=sha1('$_REQUEST["password"]');


    if($risultato==true)
    {
    //acquisisco il risultato e lo assegno ad una variabile
    $riga=mysql_fetch_array($risultato);
    $passwordcontrollo=$riga["password"];
    mysql_close($connessione);


    //eseguo il controllo
    if($password===$passwordcontrollo)
    {
    //inizializzo la sessione
    session_start();

    //assegno alla variabile superglobale un valore per le altre pagine
    $_SESSION['username']=$username;
    // Reindirizzare con un ritardo di 1 secondo:
    header('Refresh: 1; url=http://localhost:8888/Sito/homepage.php');
    echo 'Reindirizzamento alla home-page';

    }
    else
    {
    echo"<p>Login fallito!</p>";
    }
    }
    else{
    echo"query errata";
    }


    ?>


    in qualsiasi caso mi lascia accedere...

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    28
    Quote Originariamente inviata da aleb95 Visualizza il messaggio
    qualcuno mi sa spiegare perché una volta che l utente si è iscritto e registrato con username e relativa password criptata con sha1()... al momento del login lo lascia accedere anche se inserisce una password a casaccio??
    vi posto qui il codice del log-in:

    <?php
    //connessione e selezione del database
    $connessione=mysql_connect("localhost","root","roo t");
    mysql_select_db("sito",$connessione);


    //definisco la query di controllo
    $query=strtolower("SELECT users.password FROM users WHERE users.username='{$_REQUEST["username"]}' ");

    //eseguo la query
    $risultato=mysql_query($query,$connessione);




    //acquisisco username e password che mi serviranno più avanti
    $username=$_REQUEST["username"];
    $password=sha1('$_REQUEST["password"]');


    if($risultato==true)
    {
    //acquisisco il risultato e lo assegno ad una variabile
    $riga=mysql_fetch_array($risultato);
    $passwordcontrollo=$riga["password"];
    mysql_close($connessione);


    //eseguo il controllo
    if($password===$passwordcontrollo)
    {
    //inizializzo la sessione
    session_start();

    //assegno alla variabile superglobale un valore per le altre pagine
    $_SESSION['username']=$username;
    // Reindirizzare con un ritardo di 1 secondo:
    header('Refresh: 1; url=http://localhost:8888/Sito/homepage.php');
    echo 'Reindirizzamento alla home-page';

    }
    else
    {
    echo"<p>Login fallito!</p>";
    }
    }
    else{
    echo"query errata";
    }


    ?>


    in qualsiasi caso mi lascia accedere...
    nessuno mi sa aiutare ?

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Prima di tutto alcune considerazioni sull'uso del forum:
    - non è una chat, non aspettarti risposte immediate, quindi non fare up dopo un'ora, da tempo alle persone di leggere e rispondere.
    - non quotare un messaggio se non necessario, rendi solo meno leggibile la discussione
    - quando scrivi del codice mettilo tra i tag [php] e [ /php] (questo senza spazio tra [ e / ) e verifica con l'anteprima che sia indentato in modo leggibile.

    Ora veniamo al codice, anche qui acune considerazioni:
    - usa $_POST o $_GET, tanto lo sai come arrivano i dati, evita l'uso di $_REQUEST.
    $query=strtolower("SELECT users.password FROM users WHERE users.username='{$_REQUEST["username"]}' ");
    a che serve fare l'strtolower? Le query sono case insensitive, così come la stringa che passi come username, scritta così per MySQL PIppO o pippo sono la stessa cosa.

    $password=sha1('$_REQUEST["password"]');
    Qui stai facendo sha1 della stringa $_REQUEST["password"], non del contenuto della variabile, php non valuta variabili all'interno di apici singoli, le tratta come stringhe.
    Il tuo problema sta proprio lì, sono sicuro che quando fai registrare un utente fai la stessa cosa, nel db salvi
    $password=sha1('$_REQUEST["password"]');

    Hai più di un utente nel db (se non ce l'hai registrane un altro)? Prova a dare un'occhiata, secondo me le password nel db sono tutte uguali, giusto?

    if($risultato==true)
    Sebbene funzioni, il modo corretto sarebbe fare così
    Codice PHP:
    if ( mysql_num_rows($risultato) == 
    Ad ogni modo, io eseguirei solo una query fatta così
    Codice PHP:
    $pass sha1($_POST["password"]); //qui come vedi non ci sono gli apici attorno alla variabile

    $query "SELECT password FROM users WHERE username='{$_POST["username"]}' AND password='{$pass}'"); 

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    28
    Scusami se ho fatto up dopo così poco tempo ma è che mi mancava soltanto più la criptazione delle password e poi avrei finito il mio "esperimento" ... comunque hai ragione...
    per quanto riguarda il problema si avevi ragione... ho cambiato ed ora pare funzionare
    ti ringrazio!
    Alessio

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 © 2025 vBulletin Solutions, Inc. All rights reserved.