Генератор паролей для сайта

Генератор паролей для сайта

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

скачать исходникискачать урок

Постановка задачи

Для сегодняшнего урока, я создал очень простую html страницу, которую мы будем использовать для сегодняшнего скрипта:

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Вот исходный код, данной страницы:

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

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

Конфигурационный файл

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

Настройка нам потребуется всего лишь одна – это количество символов пароля. Для хранения настроек будем использовать обычные константы. Сразу же давайте подключим данный файл к нашему тестовому сайту:

Первый вариант генерации пароля

Итак, теперь давайте создадим файл functions.php, который будем использовать для хранения функций генератора паролей. И сразу же подключим данный файл в файле index.php:

Также добавим вызов функции, которая собственно и будет возвращать сгенерированный пароль (опять же в файле index.php):

Теперь переходим в файл functions.php и начнем писать код функции get_pass():

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

Как Вы видите это большие и малые буквы и цифры. Дальше необходимо определить длину данной строки и индекс последнего символа. Так как при генерации пароля мы будем использовать обычный цикл и случайным образом выбирать из данной строки символы. А доступ к каждому символу строки, можно получить по его индексу (номеру). Напомню, что индексация символов в строке начинается с нуля. Поэтому что бы узнать индекс последнего символа в строке, необходимо определить ее длину и вычесть единицу:

Дальше создаем переменную, в которую буде сохранен сгенерированный пароль:

Теперь в цикле необходимо выполнить генерацию нового пароля:

Как Вы видите, это обычный цикл for(), в котором:

$i – это счетчик итераций;

$i < LENGTH – условие выхода из цикла, цикл будет выполнятся до тех пор, пока количество итераций цикла, меньше значения хранящегося в константе LENGTH (количество символов пароля). То есть на каждой итерации цикла, мы будем поучать всего лишь один символ пароля;

$i++ — после каждой итерации, увеличиваем значение переменной $i на еденицу.

Далее, используя функцию mt_rand(0,$str_lenght), мы получаем случайное число в диапазоне от 0 до $str_lenght.
Напомню, что функция mt_rand — генерирует случайное значение методом mt, Она использует генератор случайных чисел с известными характеристиками, основанный на «Вихре Мерсенна», который генерирует случайные числа в среднем в четыре раза быстрее чем rand().

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

То есть случайным образом определяем индекс для получения символа из строки $str, что собственно далее и выполняем. И после завершения цикла в переменной $str_gen, получаем сгенерированный пароль, который возвращаем при помощи конструкции return

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

Давайте посмотри в браузере, что получилось:

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

Смотрите, будем сравнивать символ, сгенерированный на предыдущей итерации цикла (если конечно это не первая итерация), с символом, полученным на текущей итерации. Если они равны, значит, необходимо повторить генерацию символа. Для этого уменьшаем счетчик итераций на единицу $i—, и переходим на следующую итерацию. Давайте еще раз посмотрим в браузере, что получилось:

Как Вы видите, все успешно работает. На всякий случай приведу полный код функции генерации пароля:

Второй вариант генерации пароля

Итак, мы с Вами рассмотрели, один из вариантов генерации случайного пароля. Теперь давайте рассмотрим еще один вариант.

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

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

Обратите внимание, создаем два массива: $gl – для хранения гласных, $so – для хранения согласных.
Далее давайте создадим переменную, в которую будем сохранять сгенерированный пароль. Так как есть два варианта чередования символов в пароле – вначале гласные затем согласные и наоборот. Значит, в начале, нужно случайным образом определять какой вариант использовать. Для этого случайным образом будем определять число от нуля до 20.

И, к примеру, если получившееся число больше 9, значит, будем использовать чередование гласные — согласные. В другом случае – согласные- гласные.

Теперь для генерации пароля, необходимо создать цикл, в котором мы будем случайным образом, на каждой итерации цикла, получать символы из существующих массивов ($gl, $so) и добавлять их в переменную $result. Итак, цикл для чередования гласные-согласные:

Параметры цикла:

$i – счетчик итераций цикла;

$i < LENGTH – условие выхода из цикла - цикл выполняется пока счетчик итераций меньше значения константы LENGTH;

$i+=2 – действие после каждой итерации цикла. Так как на каждой итерации цикла мы будем получать по два символа пароля, значит, счетчик итераций нужно увеличивать на два.

В коде цикла действуем аналогично первому примеру, то есть случайно определяем индексы ячеек массива. Как обычно диапазон определения случайных чисел, задаем от нуля (индексация массива начинается с нуля) и до индекса последней ячейки массива. Индекс последней ячейки массива определяем, используя функцию count(), которая возвращает количество ячеек массива.

Но вначале, определяем индекс ячейки для массива гласных, а затем индекс – для массива согласных. И по этим индексам заносим символы в переменную $result. Аналогичный цикл для чередования согласные-гласные:

И в конце как обычно возвращаем полученный пароль – то есть переменную $result. Теперь давайте приведу полный код функции генерации пароля:

Давайте посмотрим, какой результат мы получив браузере:

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

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (2)

  1. Evgen

    хорошее видео

  2. Виктор Гавриленко

    Спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree