2016-10-05 8 views
-1

mein Register mit Hash ‚sha256‘ Passwort für Datenbank-Hash sha256 Passwort verwenden, nicht, dass ich die Funktion, dass für die Anmeldung mit Hash-Passwort .. habe ich versucht, es aber nicht zu reparieren oder ich brauche Hash zu verwenden Passwort für sie ::wie für gU Anmeldung php

session_start(); 

try{ 
$bdd = new PDO('mysql:host=localhost; dbname=senio743_payless','senio743_peter', '[email protected]'); 
} 
catch (Exception $e) { 
die ('Error: '.$e->getMessage()); 
} 

$data = array(); 

if (isset($_POST['submit'])) { 
    if (isset($_POST['con_id'])) { 
    $conId= htmlspecialchars($_POST['con_id']); 
    } 

    if (isset($_POST['con_password'])) { 
    $pass= htmlspecialchars($_POST['con_password']); 
    } 

    if ($conId==''||$pass=='') { 
    $message="Fill in all the enteries"; 
    echo "<script>alert('".$message."');</script>"; 
    exit(); 
    } 

    $query= "SELECT * FROM `consumer` WHERE `con_id`='".$conId."' AND `con_password`= '".$pass."'"; 

    $prepare = $bdd->prepare($query); 
    $exist = $prepare->execute(); 

    if ($exist) { 
    if ($prepare->rowCount()>0) { 
     $data[]=$prepare->fetch(); 
     foreach ($data as $datas) { 
      $con_name=$datas['con_name']; 
      $con_amount=$datas['con_amount']; 
      //echo $mer_name; 
     } 
     $_SESSION['ID']= $conId; 
     $_SESSION['name']= $con_name; 
     $_SESSION['balance']= $con_amount; 
     // $message="LOGIN Succesful"; 
     header("location:../consumer/summary.php"); 
     exit(); 
    } 
    else { 
     $_SESSION['ID']= ""; 
     $_SESSION['name']= ''; 
     $_SESSION['balance']= 'Login Please'; 
     $message="Login not succesful"; 
     echo "<script>alert('".$message."');</script>"; 
     header("location:../login.php"); 
     exit(); 
    } 
} 

bitte Hilfe benötigen, danke ..

+0

genauso gut funktionieren kann unter Verwendung einer Hash-Funktion nicht ausreichend ist, und das Hinzufügen von nur einem Salz tut wenig, um die Sicherheit zu verbessern. Stattdessen iterieren Sie über einen HMAC mit einem zufälligen Salz für etwa 100ms und speichern Sie das Salz mit dem Hash. Verwenden Sie Funktionen wie 'PBKDF2',' password_hash', 'BCrypt' und ähnliche Funktionen. Der Punkt ist, den Angreifer dazu zu bringen, viel Zeit mit der Suche nach Passwörtern zu verbringen, indem er eine gängige Passwortliste verwendet. – zaph

+0

PHP schlägt vor, dass Sie nicht Ihr eigenes Salz verwenden, wenn Sie nicht wirklich wissen, was Sie tun. Von der PHP-Site übernommen - "Warnung Die Option salt ist ab PHP 7.0.0 veraltet. Es wird jetzt bevorzugt, einfach das Salz zu verwenden, das standardmäßig erzeugt wird." – Blinkydamo

Antwort

1

Sie (nicht md5 verwenden).

PHP hat eine Kennwort-Hashing-Funktion.

$options = [ 'cost' => 15 ]; 
$hashed_password = password_hash('password', PASSWORD_BCRYPT, $options); 

if(password_verify($_POST['password'], $hashed_password)) 
{ 
    // Password the same 
} 
else 
{ 
    // Password failed 
} 

http://php.net/manual/en/function.password-hash.php

http://php.net/manual/en/function.password-verify.php


mit Ihrem Skript etwas in diese Richtung

if (isset($_POST['submit'])) { 

if ($conId==''||$pass=='') { 
    $message="Fill in all the enteries"; 
    echo "<script>alert('".$message."');</script>"; 
    exit(); 
    } 
    $query = "SELECT * FROM `consumer` WHERE `con_id`= :con_id"; 
    $prepare = $bdd->prepare($query); 
    $prepare->bindParam(':con_id', $con_id); 
    $prepare->execute(); 
    $exists = $prepare->fetch(); 

    $pass = hash('sha256', $_POST['pass']); 
    if($pass == $exists['pass']) 
    { 
     // Passwords Match 
    } 
    else 
    { 
     // They Don't 
    } 
} 
-1

Die Hash-Funktion ist nur hash('sha256', $pass);

http://php.net/manual/en/function.hash.php

Auch wenn ich jemanden anmelde, habe ich immer den Benutzernamen meines Benutzers nachgeschlagen und dann die Passwörter in PHP verglichen. Es sollte schneller sein, da die Abfrage keine Zeichenfolge mit 200 Zeichen mit Tausenden anderer Zeichenfolgen vergleicht.

+0

im sorry, im anfang php könntest du mir sagen, wie man es in diesem code benutzt? –

+0

Wenn Sie einen Benutzer erstellen, müssen Sie die obige Hash-Funktion verwenden, um das Kennwort in eine Hash-Zeichenfolge umzuwandeln. Dann speichern Sie diese Zeichenfolge in Ihrer Datenbank. Wenn sich jemand anmeldet, wählen Sie den Benutzer (mindestens die Benutzer-ID und das Passwort) anhand des Benutzernamens aus, den Sie eingegeben haben. Wenn der Benutzer gefunden wird, verwenden Sie die gleiche Hash-Funktion für das Passwort, das die Person auf dem Anmeldebildschirm eingegeben hat, und vergleichen Sie ('===') mit dem Hash-Passwort aus der Datenbank. Wenn sie übereinstimmen, war es eine gültige Anmeldung. – CptMisery