Scientific journal
Scientific Review. Technical science
ISSN 2500-0799
ПИ №ФС77-57440

PASSWORD RECOVERY SYSTEM FOR WEB SITE

Startseva E.K. 1 Vaseva E.S. 1
1 Nizhny Tagil State Socio-Pedagogical Institute (branch) of Russian State Vocational Pedagogical University
3246 KB
The article considers the problem of recovering a lost password to a web resource. The technology of the process of password recovery on the site using email confirmation is described. In this method of password recovery, the user is given the right to enter a new password to write it to the database. The password recovery technology is demonstrated by organizing access to the Paprika Show Group website. The table structure is presented in which credentials should be stored. The process of creating a start page and a page on which a new password will be entered is described. On the page for entering a new password, the user enters a username, password and re-enter the password, the functions of checking the coincidence of the entered passwords, matching certain complexity of the password are defined. A code is shown, as a result of which a message is sent to the email address with a link to confirm the email address. After confirming the email address, a new password is written in encrypted form using the md5 method to the database. After changing the password, the user is redirected to the main page. The described technology can be used to implement the password recovery procedure using e-mail on other sites.
password
email
javascript
token
md5
php

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

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

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

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

Цель исследования: рассмотреть проблему восстановления утраченного пароля к сайту. Описать технологию процесса восстановления пароля посредством подтверждения почты на примере существующего сайта.

Материалы и методы исследования

Рассмотрим технологию реализации способа восстановления пароля с подтверждением электронной почты. Технологию восстановления пароля реализуем на примере организации доступа к сайту «Шоу-группа Паприка». Понадобится база данных, страница со ссылкой (от которой будет происходить адресация на изменение пароля), отдельная страница (для ввода нового пароля) и 2 файла с функциями обработки.

Результаты исследования и их обсуждение

В базе данных необходимо создать таблицу, в которой будут храниться следующие данные.

- Id (идентификатор/счетчик).

- E-mail – для записи почты пользователя.

- Password – для записи пароля поль- зователя.

- Reset_password_token – для записи ссылки.

Поле для записи пароля необходимо задать в формате varchar(32), т.к. для записи пароля в базу данных мы будем использовать функцию md5, которая возвращает хеш в виде 32-символьного шестнадцатеричного числа [4–5].

Далее переходим к созданию страницы, на которой будет расположена ссылка для перехода на страницу изменения пароля (далее будем называть ее «стартовой»).

На этой странице нам понадобятся поля для ввода логина и пароля, для авторизации пользователя и ссылка для перехода на страницу смены пароля. Фрагмент кода представлен на рис. 1.

star1.tif

Рис. 1. Фрагмент кода для страницы авторизации

star2.tif

Рис. 2. Код на ссылку для смены пароля

Как видно из фрагмента кода, который изображен на рис. 1, на форме нет ссылки для перехода на станицу. Эту ссылку имеет смысл вставить после формы. Код на эту ссылку представлен на рис. 2.

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

Окончательный вид страницы авторизации изображен на рис. 3.

На странице смены пароля должны быть размещены следующие элементы (рис. 4).

- Поле для ввода логина.

- Поля для ввода пароля.

- Кнопка «Сохранить».

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

star3.tif

Рис. 3. Страница авторизации

star4.tif

Рис. 4. Страница смены пароля

star5.tif

Рис. 5. Проверка паролей на совпадение

В этом фрагменте кода производится проверка на количество символов – минимальное количество 6 символов, а максимальное 8. Если пароль не соответствует этому условию, то выводится ошибка. Если пароли не совпадают, то вводится сообщение об ошибке «Пароли не совпадают», и кнопка дезактивируется.

Фрагмент кода, приведенный выше, выполняет обработку полей password и confirm_password. Эти поля выводятся на экран с помощью тега <input>. Код для страницы new_password представлен на рис. 6.

star6.tif

Рис. 6. New_password

После заполнения полей и нажатия кнопки запускается файл edit_password.php, в котором происходит обработка запроса.

Для начала нужно записать адрес сайта, для этого используется встроенная функция php – $_SERVER[‘SERVER_NAME’].

Далее производится проверка на наличие данного логина в базе данных, если такой логин есть, то код выполняется дальше, иначе выводится ошибка «Такого пользователя не существует». Фрагмент кода представлен на рис. 7.

star7.tif

Рис. 7. Фрагмент кода файла edit_password.php

Если такой пользователь существует – записываем пароль и выбираем из базы данных e-mail, который был ранее присвоен пользователю. Далее составляем токен, который будет отправлен в письме на почту пользователя, составляем все элементы для отправки письма на почту. Код для составления письма представлен на рис. 8.

star8.tif

Рис. 8. Фрагмент кода для отправки письма

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

star9.tif

Рис. 9. Вид письма для изменения пароля

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

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

Как видно на рис. 10, сначала нужно получить данные о токене, почте и пароле из глобального массива, проверить их на наличие и пустоту.

star10.tif

Рис. 10. Фрагмент кода на подтверждение почты пользователя

star11.tif

Рис. 11. Фрагмент кода на обновление пароля

После того как данные успешно получены, их нужно идентифицировать с данными в базе данных, если же данные проходят проверку, то выполняется запрос на обновление пароля. Код на обновление пароля представлен на рис. 11.

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

Заключение

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