Регистрация PHP: автогенерация пароля или возможность его выбора пользователем



Во время регистрации я обсуждаю, как мне Установить пароль пользователя:





  • Пусть пользователь выберет его. Если я делаю это, мне приходится применять некоторые стандарты (длина, слабость, может включать регексы и т. д.) Что вы обычно делаете, когда выбираете этот путь, и почему? Есть ли библиотека, доступная для PHP для этого?



  • Автоматически сгенерируйте пароль для пользователя и отправьте его по электронной почте на указанный им адрес электронной почты. Они не могут войти в систему, не получив пароль, поэтому это электронная почта проверка тоже. Проблема в том, что пароль может быть слишком сложным для запоминания пользователем. Если я позволю им изменить его на что-то более легкое, это разрушит цель моего выбора для них в первую очередь. Меня также беспокоит акт передачи пароля (как простой не хэшированный пароль) в электронном письме.



Я склоняюсь ко второму, но предпочел бы более информированный ответ, прежде чем выбирать. Вероятно, есть вещи, на которые я не обращаю внимания, как пользователь удобство и другие технические вопросы тоже. Что ты делаешь?



Правка: основываясь на ответах, я выбираю первый вариант, позволяя пользователю выбирать. Мой вопрос тогда был бы, какова сила пароля/Длина / и т. д. должен ли я требовать, и как я могу принудить его? Существуют ли для этого библиотеки PHP?

802   5  

5 ответов:

Я думаю, что есть только один ответ на этот вопрос. пусть пользователь сделает свой собственный пароль! Все остальное-это программистская лень, плохой дизайн взаимодействия и дружелюбие к клиентам (IMO).

Теперь я бы увидел несколько исключений, а именно, если это какая-то малозначимая интрасеть с горсткой пользователей, которые соглашаются на это, или если это одноразовая учетная запись, в которой людям не нужно будет входить позже.

Вам нужно хэшировать и солить ваши пароли в любом случае, даже если вы генерируете их самих. Все, что вам нужно добавить, - это некоторые правила проверки при первой отправке пользователя. Это, вероятно, даже проще сделать, чем хороший инструмент для генерации паролей.

Надежность пароля

Ссылка на сообщение о 10 измерителях силы пароля

Вы всегда можете предложить случайный пароль, если воображение пользователя внезапно становится пустым. Конечно, вы убедились, что сгенерированный пароль является "сильным" (в соответствии с вашими правилами), и у вас будет кнопка "предложить новый пароль".

Пользователи, которым не нужны сложные пароли или уникальные пароли для разных сайтов, всегда будут менять тот, который они выбрали бы, если бы вы позволили им это сделать в первую очередь. В этом случае вы сделали их нетерпеливыми, потому что вы:

  • отправил действительный пароль / код активации по электронной почте
  • заставил их проверить свой почтовый ящик (и, возможно, дождаться Вашего письма)
  • заставил их сменить пароль

Заключительный совет: вместо того, чтобы принуждать; поощряйте и подчеркивайте важность пароля размера. Измеритель силы пароля - один из самых интересных способов сделать это.

Надежность пароля PHP. На этой странице есть некоторый базовый код, который является чистым кодом, поэтому вы должны иметь возможность изменить его в соответствии с вашими потребностями. На основе кода из: http://www.tutorialtoday.com/read_tutorial/113/

Тесты для строчных / прописных / чисел / без слов / по крайней мере 8 символов. При соблюдении всех условий сила будет равна 5.

$password = **HOW YOU GET THE PASS***($_POST['pass'])????; 
    $strength = 0; 
    // letters (lowercase) 
    if(preg_match("/([a-z]+)/", $password)) { 
        $strength++; 
    } 
    // letters (uppercase) 
    if(preg_match("/([A-Z]+)/", $password)) { 
        $strength++; 
    } 
    // numbers 
    if(preg_match("/([0-9]+)/", $password)) { 
        $strength++; 
    } 
    // non word characters 
    if(preg_match("/(W+)/", $password)) { 
        $strength++; 
    } 
   // longer than 8 characters
    if(strlen($password) > 8)) { 
        $strength++; 
    } 


    if ($strength >= 5)
      print "woo hoo";
    else
      print "bah";

Здесь код для генерации пароля с буквенно-цифровыми значениями

function genRandomString() {
        $length = 8;
        $characters = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $string = "";    

        for ($p = 0; $p < $length; $p++) {
            $string .= $characters[rand(0, strlen($characters))];
        }

        return $string;
    }

Вы делаете следующее

$mailPass =genRandomString();

Лично меня очень раздражает, когда пароли доступа отправляются по электронной почте в виде открытого текста в дикую природу. Более того, пользователь в любом случае будет иметь возможность изменить пароль (я надеюсь) и поэтому изменит его на что-то другое, чем то, что вы сгенерировали. Таким образом, почему бы не позволить пользователю выбрать пароль, который он хочет во время регистрации? Конечно, необходимо указывать слабые пароли (и даже, возможно, запретить их использование в целом), но вам не обязательно кодировать сердце этой проверки, так как есть десятки готовых библиотек js, которые могут сделать это для вас.

Comments

    Ничего не найдено.