2016-04-05 31 views
0

Kısa bir süre önce kullanıcı şifreleri için bcrypt uyguladım. Kullanıcı kaydolduktan sonra parola almayı başardım ve kayıtlı oldukları parola (karma sürüm değil) ile birbirleriyle karşılaştırarak hesaplarına giriş yapabilirler. Benim sorunum - Kullanıcıya parolalarını belirten bir e-posta gönderen unutulmuş bir şifre e-posta sayfasında çalışıyorum, ANCAK hashed sürümünü gönderir. Bunun için eski olanı belirleyebileceğim ya da bu imkansız olan herhangi bir yol var mı? Bunun çok güvenli olmadığını biliyorum, ancak tamamladığım ve yaşamadığım küçük bir kişisel proje.Parolalar için bcrypt kullanma - unutulmuş parola e-postası

İşte benim forgot.php

<?php 
if (isset($_POST['email'])){ 
$email = $_POST['email']; 
$sql="select * from user where email='$email'"; 
$result = mysqli_query($mysqli_conn, $sql); 
$count=mysqli_num_rows($result); 

if($count==1) 
{ 
    $rows=mysqli_fetch_array($result); 
    $pass = $rows['password'];//FETCHING PASS 
    //echo "your pass is ::".($pass).""; 
    $to = $rows['email']; 
    //echo "your email is ::".$email; 
    //Details for sending E-mail 
    $from = "Website"; 
    $url = "www.website.com"; 
    $body = "Password recovery 
    ----------------------------------------------- 
    Url : $url; 
    <br> Your email details: $to; 
    <br>Here is your password : $pass; 
    <br><br>Sincerely, 
    Find-a-room"; 
    $from = "[email protected]"; 
    $subject = "Password recovered"; 
    $headers1 = "From: $from\n"; 
    $headers1 .= "Content-type: text/html;charset=iso-8859-1\r\n"; 
    $headers1 .= "X-Priority: 1\r\n"; 
    $headers1 .= "X-MSMail-Priority: High\r\n"; 
    $headers1 .= "X-Mailer: Just My Server\r\n"; 
    $sentmail = mail ($to, $subject, $body, $headers1); 
    } else { 
if ($_POST ['email'] != "") { 
echo "<span> Not found your email in our database</span>"; 
    } 
    } 


if($sentmail==1) 
{ 
    echo "<span style='color: #ff0000;'> Your Password Has Been Sent To Your 
Email Address.</span>"; 
} 
    else 
    { 
    if($_POST['email']!="") 
    echo "<span style='color: #ff0000;'> Cannot send password to your e-mail 
address.Problem with sending mail...</span>"; 
} 
} 
?> 

<form action="" method="post"> 
    <label> Enter your User ID : </label> 
    <input id="email" type="text" name="email" /> 
    <input id="button" type="submit" name="button" value="Submit" /> 
</form> 
+0

Parolanız varsa (gerektiği gibi), artık kullanıcıya göndermek mümkün değildir. Bunun yerine, kullanıcının yeni bir şifre belirlemesine ve bu belirteci kullanıcıya göndermesine olanak sağlayan bir zaman işareti oluşturun. –

+0

Hayır, bunu sizin için şifrelenmemiş bir biçimde kaydetmedikçe (kötü bir fikirdir) yapamazsınız. Karma değerler geri dönüşümlü DEĞİLDİR. – h2ooooooo

+0

Eski metni, düz metin olarak eski parolada olduğu gibi göndermek istiyorsanız, karma bir yoldur, şifresini çözemezsiniz (veya en azından yapamaz). Gerçekte yapmak istediğiniz şey, onlara belirli bir zaman/tamamlamanın ardından sona erecek olan parolalarını sıfırlamak için ziyaret edebilecekleri bir bağlantı göndermektir. – Mikey

cevap

0

Hashing bunu yapamaz bu yüzden, ya şifreleri düz metin gönderme tavsiye etmem tek yönlü algoritmaları kullanır.