domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
Non riesco a capire perche' non mi conferma il controllo.... Durante la fase di registrazione salvo nel database l'hash della password attraverso questa funzione:
Codice sorgente - presumibilmente Php |
function encrypt($string){ return password_hash($string, PASSWORD_DEFAULT); }
|
successivamente durante il login uso questo costrutto:
Codice sorgente - presumibilmente PHP |
if( password_verify($_POST['password'], $hash_estratto_dal_database) ){ echo "valida"; } else { echo "non valida"; }
|
Come mai mi da sempre false, nonostante inserisca la medesima password?? |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Le chiamate a password_hash e password_verify sembrano corrette, il problema e' altrove.
Posta il codice completo.
|
|
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
Codice sorgente - presumibilmente Php |
<?php function encrypt($string){ return password_hash($string, PASSWORD_DEFAULT); } function checkLogin($u, $p){ global $wpdb; $username = $u; $password = $p; $result_search = $wpdb->get_var( $wpdb->prepare( "SELECT username FROM mytable WHERE username = %s", $username ) ); $result_search = $wpdb->get_var( $wpdb->prepare( "SELECT password FROM mytable WHERE username = %s", $username ) ); if( !is_null($result_search) && password_verify ($password, $result_search) ){ $result_search = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM mytable WHERE EXISTS (SELECT id FROM mytable2) AND username = %s", $username ) ); $_SESSION['type'] = 'M'; else $_SESSION['type'] = 'U'; return true; }//password non valida else{ return false; } }//utente non trovato else{ return false; } } if ( ! isset($_SESSION['user']) && !isset($_POST["type"]) ){ echo " <ul class='tabs'> <li><a href='#scheda1'>Login</a></li> </ul> <div class='contenitore_tab'> <div id='scheda1' class='contenuto_tab'> <form action='' id='login_form' method='post'> <label for='lusername'>Username o Email</label> <input type='text' id='lusername' name='username' placeholder='Your username...'> <input type='hidden' name='type' value='login'> <label for='lpassword'>Password</label> <input type='password' id='lpassword' name='password' placeholder='Your password...'> <div style='text-align: center;'> <input type='submit' value='Login' /> <input type='button' value='Problemi?' onclick='window.location.href=\"problemi-accesso/\";' /> </div> </form> </div> </div>"; } else if (isset($_POST["type"]) && !empty($_POST["type"])) { $seconds = 4; if($_POST["type"] == 'login'){ if( checkLogin($u, $p) ){ $_SESSION['user'] = $u; echo "<div class='alert alert-success'><strong>Ottimo, Login Avvenuto Con Successo.!</strong>Indirizzamento fra $seconds secondi...</div>"; } else{ echo "<div class='alert alert-danger'><strong>Attenzione, Dati Non Corretti.!</strong> Indirizzamento fra $seconds secondi...</div>"; } echo "<script>reloadPage($seconds)</script>"; } else if($_POST["type"] == 'register'){ } } else if ( isset($_SESSION['user']) && isset($_SESSION['type']) ){ echo "<a style='float: right;' class='btn btn-danger' href='logout/' draggable='false' ondragstart='return false;'><i class='fa fa-sign-out' aria-hidden='true'></i> Logout</a><br>"; } ?>
|
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
E il codice per la registrazione degli utenti?
|
|
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
E' in fase di programmazione diciamo
Comunque mi sono semplicemente limitato a mettere nel database la password criptata di ciao (che e' y$ups9TIcPNYw5ZKXxePkgtu2edYeYo3p2fwvu4zilYUdEqqDkUt9vG) di un utente e su quello far il controllo, ma mi restituisce comunque falso il controllo
Ultima modifica effettuata da domenico_rizzo il 01/04/2017 alle 15:50 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Eh... il problema e' probabilmente nel modo in cui hai inserito la password.
|
|
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
Mi sono semplicemente limitato a copiare ed incollare quel valore in un varchar di 250
Non capisco proprio
Se usassi sha1 al suo posto?
Ultima modifica effettuata da domenico_rizzo il 01/04/2017 alle 23:23 |
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
Solo un piccolo appunto, un codice scritto in questo modo è passibile di un attacco SQL injection, forse sarebbe il caso di usare query parametriche con funzioni di "Sanitize" delle stringhe.
O sbaglio?
G.
Ibis redibis non morieris in bello |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Postato originariamente da domenico_rizzo:
mi sono semplicemente limitato a mettere nel database la password criptata di ciao (che e' y$ups9TIcPNYw5ZKXxePkgtu2edYeYo3p2fwvu4zilYUdEqqDkUt9vG) |
Evidentemente no...
Codice sorgente - presumibilmente Plain Text |
<?php
var_dump( password_verify("ciao", 'y$ups9TIcPNYw5ZKXxePkgtu2edYeYo3p2fwvu4zilYUdEqqDkUt9vG'));
?>
|
A giudicare dal formato dell'hash, sono convinto che l'hai generato in maniera sbagliata. Dovrebbero esserci piu' caratteri '$' nell'hash... nel tuo ne vedo solo uno.
Codice sorgente - presumibilmente PHP |
<?php for ($i = 0; $i < 10; $i++){ echo password_hash("ciao", PASSWORD_DEFAULT) . "<br/>"; } ?>
|
$2y$10$PksV0E6HJSQYuheyJDVYW.bb1LBh1KzynAspPY.yC3XTJ6c83mjmW
$2y$10$82e6nxEaE2J6EGEjjGkMB.dORM7mXf9Xe/hhxPADjCQSCuV/XjRo.
$2y$10$6isp/v.ZtlzSKF20V1Hjg.JsQu72Uszllz9w8gA3zHujOIHJqrmAK
$2y$10$IKPC1xDNeSQy52FC67J7XO.hU/ssVH66Uljv90gGHJ6DQbgdu64hW
$2y$10$Kky8CZihitXEO6ZwBSSJU.fJf4cVd40o4RJ0FLxWFzMar8vZ/MADa
$2y$10$b4TChKCC/kFZeE8prN.bJusbhQ/nmX9LHsfP1QmLvjwb6JJMne40G
$2y$10$AplwG.zO4mZgSLuLkOktDOnTdqjfLPiHlex4GRX1vgKX9GANDQqRS
$2y$10$T5NV/Pw9Cjcf97stb9n/xelSOVXCvpZDzcVc7hUtBgZ/JX/2PThxq
$2y$10$f9HB0H5M216sYbAflWHpvOVs3z0EgT/TqoX3pltcM1gTx5UlRwz46
$2y$10$Nvwc15tYLSyLhmZKMWnKbO4jAAfOiANoB5LXi9nyKza/QEOHXMGb.
|
|
|