Отправка безопасного временного пароля - PullRequest
1 голос
/ 21 октября 2011

Я создаю страницу забытого пароля и буду отправлять пользователю временный пароль по электронной почте, чтобы он мог войти и сбросить свой пароль.

Что следует учитывать при создании пароля, что такоелучший метод.

Идея, которая у меня возникла, выглядит примерно так: $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>'; 
        }

}

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Используйте только случайную строку: более чем вероятно, что пользователь пытается войти, например, с iPhone, отказывает, запрашивает новый пароль и открывает ссылку, только когда он находится на своем домашнем ПК.IP-адреса разные, устройство другое, все другое.

1 голос
/ 22 октября 2011

Если вы отправляете пароль по электронной почте, его невозможно полностью защитить. Электронная почта передается в виде простого текста. И, как сказал альф, пользователь может сбросить пароль с IP-адреса, отличного от того, с которого он его запрашивал.

Один из вариантов - создать случайную строку, затем отобразить половину ее на странице сброса пароля (после выполнения запроса на сброс) и половину строки в электронном письме. Затем попросите пользователя ввести обе половины в форму, прежде чем позволить ему выбрать новый пароль.

...