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

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

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

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

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

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


person Chris    schedule 12.10.2009    source источник
comment
Наличие слишком сложного пароля не повысит вашу безопасность, поскольку ваш пользователь будет копировать и вставлять, или у них на столе будут заметки с вашим паролем ...   -  person jantimon    schedule 12.10.2009
comment
@Ghommey: Хотя сложный пароль не увеличивает безопасность со стороны пользователя, он увеличивает безопасность в сети. Это означает, что, например, словарные атаки, направленные на сайт, не сработают. Хотя это может быть довольно теоретический момент.   -  person Ilari Kajaste    schedule 13.10.2009


Ответы (5)


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

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

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

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

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

person markus    schedule 12.10.2009

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

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

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

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

person chelmertz    schedule 12.10.2009
comment
Хороший момент, это было бы идеальным решением с точки зрения пользователя. - person markus; 12.10.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";
person easement    schedule 12.10.2009

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

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

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

        return $string;
    }

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

$mailPass =genRandomString();
person Community    schedule 01.02.2012

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

person clops    schedule 12.10.2009
comment
В целом, я против паролей как концепции в целом. Рассмотрите возможность использования OpenID (как на этом сайте), используйте хэш-ссылку, отправленную по электронной почте. - person clops; 12.10.2009
comment
openID в порядке, но вам нужен пароль для вашего openID :) - person markus; 12.10.2009
comment
@clops: OpenID - это круто ... если только вы не работаете с широкой публикой, а не с пользователями StackOverflow. :) - person Ilari Kajaste; 13.10.2009