Просмотрите форумы, интернет-магазин, гостевую книгу и т.д. Используйте регистрацию пользователей и последующее утверждение. Это даже почти обязательный элемент каждого сайта (если только это не домашняя страница Васи Пупкина или визитная карточка какой-нибудь небольшой компании). Сегодня мы хотим поделиться со всеми новичками информацией о том, как реализовать все это наилучшим образом.
Модель утверждения:.
Клиент
-
Регистрация :.
- Логин (a-z0-9)
- Пароль
-
Соединения : Соединения
- Подключение
- Пароль
-
Печенье :.
- Уникальный идентификатор пользователя
- хэш
Сервер MySQL
Таблица usersuser_id (int (11)) user_login (varchar (30)) user_password (varchar (32)) user_hash (varchar (32)) user_ip (int (10)) 0 по умолчанию
Во время регистрации имя пользователя и пароль (двойное шифрование md5) записываются в базу данных.
Во время авторизации сравниваются имя пользователя и пароль, и если они верны, генерируется случайная строка, хэшируется и добавляется в базу данных в строку user_hash. Он также записывает IP-адрес пользователя (хотя это необязательно, так как некоторые пользователи используют прокси-серверы, а некоторые — динамические IP-адреса). Здесь пользователь выбирает безопасность или удобство использования). В cookie хранится уникальный идентификатор пользователя и сгенерированный хэш.
Почему в cookie должен храниться хэш случайной строки, а не хэш пароля? 1. в системе могут быть лазейки из-за небрежности разработчика. Злоумышленник может извлечь пароль из базы данных и вставить его в cookie, чтобы получить доступ к ограниченным данным. В нашем случае двойной хэш пароля не поможет хакеру. Это происходит потому, что он не может расшифровать ее (теоретически это возможно, но на это уйдут месяцы или годы), и для этого нет места. Это происходит потому, что в момент авторизации с IP-адресом пользователя связан уникальный хэш. 2. если злоумышленник использует троянского коня для получения уникального хэша, он также не сможет его использовать (если только пользователь не решит пренебречь своей безопасностью и не отключит привязку IP-адресов при авторизации).
Применение.
Структура таблицы `users` в базе данных ‘testtable’.
register.php
login.php
check.php
logout.php
Чтобы защитить форму входа в систему от перебора, ее можно переподключить с помощью перехвата или временной задержки.
Автор: http: //adapted from jiexaspb.habrahabr.ru/PHP5.5 and MySQL5.7KDG.
Cookies с установленным флагом HttpOnly не появляются в коде javascript браузера, а только отправляются на сервер. На практике нет необходимости получать содержимое через JavaScript. Однако злоумышленники, которые находят XSS (а XSS рано или поздно найдет его где-нибудь), очень рады, что HttpOnly не появляется в cookie аутентификации.