2016-04-05 8 views
0

私は最近、ユーザパスワードのためにbcryptを実装しました。私は、ユーザーが登録するときにパスワードをハッシュにすることができました。登録されたパスワード(ハッシュされたバージョンではありません)を互いに照合して自分のアカウントにログインできます。私の問題は - 私は忘れてしまったパスワードの電子メールページに取り組んでいます。このページでは、パスワードを記載した電子メールをユーザーに送信しますが、ハッシュされたバージョンを送信します。これを回避する方法はありますか?私は古いものを述べることができますか?これは不可能ですか?私はこれがあまり安全ではないことを知っていますが、私は完了している小さな個人的なプロジェクトであり、生きていません。パスワードの忘れたパスワードメールのためにbcryptを使用する

は、ここに私の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

パスワードをハッシュした場合(必要に応じて)、これ以上ユーザーにパスワードを送信することはできません。代わりに、ユーザーが新しいパスワードを設定してこのトークンをユーザーに送信できるワンタイムトークンを作成します。 –

+0

いいえ、暗号化されない形式で保存しないとできません(これは悪い考えです)。ハッシュ値は可逆ではありません。 – h2ooooooo

+0

古いパスワードをプレーンテキストで送信する場合と同じように、ハッシュが一方向であれば、それを復号化することはできません(または少なくともできないはずです)。あなたが本当にやりたいことは、ある時間/完了後に期限切れになるパスワードをリセットするために訪問できるリンクを送信することです。 – Mikey

答えて

0

ハッシュは、あなたがこれを行うことはできませんので、私はどちらかのプレーンテキストでパスワードを送信して助言しません一方通行のアルゴリズムを使用しています。

関連する問題