Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Login attraverso hash
Forum - PHP - Login attraverso hash

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
domenico_rizzo (Normal User)
Rookie


Messaggi: 45
Iscritto: 27/07/2015

Segnala al moderatore
Postato alle 14:04
Sabato, 01/04/2017
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

  1. function encrypt($string){
  2.      return password_hash($string, PASSWORD_DEFAULT);
  3. }


successivamente durante il login uso questo costrutto:
Codice sorgente - presumibilmente PHP

  1. if( password_verify($_POST['password'], $hash_estratto_dal_database) ){ echo "valida"; }
  2. else { echo "non valida"; }


Come mai mi da sempre false, nonostante inserisca la medesima password?? :_doubt:


Domenico Rizzo
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6056
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 14:26
Sabato, 01/04/2017
Le chiamate a password_hash e password_verify sembrano corrette, il problema e' altrove.

Posta il codice completo.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
domenico_rizzo (Normal User)
Rookie


Messaggi: 45
Iscritto: 27/07/2015

Segnala al moderatore
Postato alle 15:14
Sabato, 01/04/2017
Codice sorgente - presumibilmente Php

  1. <?php
  2. function encrypt($string){
  3.      return password_hash($string, PASSWORD_DEFAULT);
  4. }
  5. function checkLogin($u, $p){
  6.         global $wpdb;
  7.         $username = $u;
  8.         $password = $p;
  9.         $result_search = $wpdb->get_var( $wpdb->prepare( "SELECT username FROM mytable WHERE username = %s", $username ) );
  10.         if( !is_null($result_search) ){
  11.                 $result_search = $wpdb->get_var( $wpdb->prepare( "SELECT password FROM mytable WHERE username = %s", $username ) );
  12.                 if( !is_null($result_search) && password_verify($password, $result_search) ){
  13.                      $result_search = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM mytable WHERE EXISTS (SELECT id FROM mytable2) AND username = %s", $username ) );
  14.                      if( !is_null($result_search) )
  15.                         $_SESSION['type'] = 'M';
  16.                      else
  17.                         $_SESSION['type'] = 'U';
  18.                      return true;
  19.                 }//password non valida
  20.                 else{
  21.                         return false;
  22.                 }
  23.         }//utente non trovato
  24.         else{
  25.                 return false;
  26.         }
  27. }
  28.  
  29. if ( ! isset($_SESSION['user']) && !isset($_POST["type"]) ){
  30.     echo "
  31.         <ul class='tabs'>
  32.                 <li><a href='#scheda1'>Login</a></li>
  33.         </ul>
  34.         <div class='contenitore_tab'>
  35.                 <div id='scheda1' class='contenuto_tab'>
  36.                         <form action='' id='login_form' method='post'>
  37.                                 <label for='lusername'>Username o Email</label>
  38.                                 <input type='text' id='lusername' name='username' placeholder='Your username...'>
  39.                                 <input type='hidden' name='type' value='login'>
  40.                                 <label for='lpassword'>Password</label>
  41.                                 <input type='password' id='lpassword' name='password' placeholder='Your password...'>
  42.                                 <div style='text-align: center;'>
  43.                                         <input type='submit' value='Login' /> <input type='button' value='Problemi?'  onclick='window.location.href=\"problemi-accesso/\";' />
  44.                                 </div>
  45.                     </form>
  46.                 </div>
  47.         </div>";
  48. }
  49. else if (isset($_POST["type"]) && !empty($_POST["type"])) {
  50.      $seconds = 4;
  51.      if($_POST["type"] == 'login'){
  52.            $u = str_replace( "'", "", str_replace("\"", "", $_POST['username']) );
  53.            $p = str_replace( "'", "", str_replace("\"", "", $_POST['password']) );
  54.            unset($_POST);
  55.            if( checkLogin($u, $p) ){
  56.                 $_SESSION['user'] = $u;
  57.                 echo "<div class='alert alert-success'><strong>Ottimo, Login Avvenuto Con Successo.!</strong>Indirizzamento fra $seconds secondi...</div>";
  58.            }
  59.            else{
  60.                 echo "<div class='alert alert-danger'><strong>Attenzione, Dati Non Corretti.!</strong> Indirizzamento fra $seconds secondi...</div>";
  61.            }
  62.            echo "<script>reloadPage($seconds)</script>";
  63.       }
  64.       else if($_POST["type"] == 'register'){
  65.       }
  66. }
  67. else if ( isset($_SESSION['user']) && isset($_SESSION['type']) ){
  68. 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>";
  69.  
  70. }
  71. ?>



Domenico Rizzo
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6056
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:19
Sabato, 01/04/2017
E il codice per la registrazione degli utenti?


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
domenico_rizzo (Normal User)
Rookie


Messaggi: 45
Iscritto: 27/07/2015

Segnala al moderatore
Postato alle 15:48
Sabato, 01/04/2017
E' in fase di programmazione diciamo :rofl:
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


Domenico Rizzo
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6056
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:45
Sabato, 01/04/2017
Eh... il problema e' probabilmente nel modo in cui hai inserito la password.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
domenico_rizzo (Normal User)
Rookie


Messaggi: 45
Iscritto: 27/07/2015

Segnala al moderatore
Postato alle 23:20
Sabato, 01/04/2017
Mi sono semplicemente limitato a copiare ed incollare quel valore in un varchar di 250 :noway:
Non capisco proprio :d

Se usassi sha1 al suo posto?

Ultima modifica effettuata da domenico_rizzo il 01/04/2017 alle 23:23


Domenico Rizzo
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 266
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 14:24
Domenica, 02/04/2017
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 et redibis non morieris in bello
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6056
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:37
Domenica, 02/04/2017
Testo quotato

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

  1. <?php
  2. var_dump( password_verify("ciao", 'y$ups9TIcPNYw5ZKXxePkgtu2edYeYo3p2fwvu4zilYUdEqqDkUt9vG'));
  3. ?>



Testo quotato


bool(false)



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

  1. <?php
  2. for ($i = 0; $i < 10; $i++){
  3.         echo password_hash("ciao", PASSWORD_DEFAULT) . "<br/>";
  4. }
  5. ?>



Testo quotato


$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.



Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo