Регистрация PHP: автоматически сгенерировать пароль или позволить пользователю выбрать его - PullRequest
4 голосов
/ 12 октября 2009

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

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

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

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

Редактировать: Основываясь на ответах, я перехожу к первому варианту, позволяя пользователю выбирать. Тогда у меня возникнет вопрос: какова надежность / длина пароля и т. Д. я должен требовать, и как мне обеспечить это? Есть ли для этого библиотеки PHP?

Ответы [ 5 ]

6 голосов
/ 12 октября 2009

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

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

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

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

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

2 голосов
/ 12 октября 2009

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

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

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

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

1 голос
/ 01 февраля 2012

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

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

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

        return $string;
    }

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

$mailPass =genRandomString();
1 голос
/ 12 октября 2009

Надежность пароля 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";
0 голосов
/ 12 октября 2009

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

...