我正在創建一個被遺忘的密碼頁面,並且會通過電子郵件向用戶發送一個臨時密碼,以便他們可以登錄並重置密碼。發送安全臨時密碼
創建密碼時我應該考慮什麼,最好的方法是什麼。
一個想法我已經是這樣的:$temporarypassword = sha1($_SERVER['REMOTE_ADDR'])
在試圖只允許他們從他們所要求的臨時密碼,IP地址登錄。做這個的最好方式是什麼??
到目前爲止的代碼:
if(strpos($_SERVER['HTTP_REFERER'],'domain.com') && ($_POST['forgotpasstoken'] == sha1($_SESSION['token'].'forgotpassword'))){
if(isset($_POST['forgotemail']) && !empty($_POST['forgotemail'])){
$email = mysql_escape_string(trim($_POST['forgotemail']));
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE){
echo '<div class="error">Please enter a valid email address.</div>';
} else {
$sql = "SELECT email FROM users WHERE email = '$email' LIMIT 1";
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($res) > 0) {
//If email/user exists
$temporarypassword = sha1($_SERVER['REMOTE_ADDR'])
//EMAIL PASSWORD HERE
echo '<div class="success">A temporary recovery password has been emailed to you.</div>';
//If email/user exits
} else {
echo '<div class="error">This email is not registered.</div>';
}
}
} else {
echo '<div class="error">Please enter an email address.</div>';
}
}
我不會建議這樣做。 IP可以改變,這個人可以在重置IP之後收到郵件或任何東西。 我會建議像一個完全隨機的密碼,這是隻適用於很短的時間。不要忘記通知用戶。 –