Нужно сделать сервис регистрации, аутентификации и авторизации для того, чтобы его можно было гибко использовать в различных системах. Приоритет ставится на безопасность и универсальность. Имя сервера - auth.domain.ru В будущем сервис будет работать по SSL/TLS (HTTPS). Остальные сервисы - plain HTTP. Сейчас пока всё будет работать по HTTP. Предполагаемые действия: Регистрация нового пользователя; Аутентификация и авторизация; Восстановления пароля; Смена пароля; Требуется возможность ведения различных баз пользователей. Различным базам соответствуют различные устанавливаемые куки; После авторизации (регистрации и т.д.) обратный редирект (по referrer, по куке или по данным из формы - пока непонятно. обсуждаемо); Страничка входа, регистрации восстановления пароля делается на стороне авторизуемого сервиса. Сервис авторизации делает только отлуп; Логирование событий.
Проверки при авторизации: Установлена ли кука (чтобы отсечь ботов). Кука должна быть установлена на этапе входа на страницу логина; referrer; При частом входе - капча. В идеале использовать “leaky bucket”; Блокировать одновременный вход с разных IP. При очень частом входе - блок (возможно, средствами сервера - nginx); Защита от xss, csrf.
Параметры безопасности: SHA-1 с солью; Желательно устанавливать не одну, а две куки, которые зависят друг от друга. Не факт, что это хорошая идея; Пароли не хранить в открытом виде; Реализовать базовую возможность работы с смс шлюзом. Т.е. уведомления отсылаются не на почту, а на телефон; Привязка сессии к ip. Возможна привязка к версии браузера; Возможность динамического изменения некоторых параметров безопасности (соль, название куки, привязка к версии браузера, csrf код), без накладных расходов
Технические параметры: Куки устанавливаются на домен .domain.ru При регистрации записывать следующие параметры: id, login, password, service, mail, date_register, date_activate, date_comment_last, ip_register, ip_last, phone, activate, activate_key, profile_name, profile_sex, profile_country, profile_region, profile_city, profile_birthday, profile_site, profile_site_name, profile_icq, profile_about, profile_date, profile_avatar, profile_foto; Приблизительная схема базы данных прилагается ( depositfiles.com/files/vd1cb4y... );
Параметры разработки: Kohana 3.2 (т.е. желательно 3-ей версии); PHP5, MySQL5; Хранение сессий в системе кеширования (memcached, regis, xcache и т.д.). С дублированием значений в базу. Не обязательно реализовывать работу со всеми системами кеширования, но в случае чего миграция на другую систему должна быть безболезненной; Максимальное документирование кода в простых комментариях; Любые отклонения или дополнения от ТЗ необходимо обсудить; Использование готовых модулей - на ваше усмотрение; Приветствуется использование онлайн систем контроля версий. Правда, желательно не выкладывать код в общий доступ.
Примерная схема работы: 1) первичная регистрация в процессе оформления заказа: - гость делает заказ услуг на сайте (создает проект) и указывает почту - отсылается письмо с ссылкой (подтверждение почты) - при переходе по ссылке проверяется: -- проект еще не опубликован? -- ссылка (код в ссылке) действительна? -- пользователь с этой почтой зарегистрирован? --- если незарегистрирован, то зарегистрировать, сгенерировать и высласть пароль - если проверки пройдены, то дать добро на публикацию проекта - сразу автоматически авторизуется
2) вход - пользователь вводит почту и пароль - проверяется, запускается сессия. Нужно сделать все качественно, не допуская возможности взлома или перехвата
3) выход -- закрывается сессия
4) напоминание пароля - пользователь указывает почту - если пользователь с почтой зарегистрирован, отсылается письмо с ссылкой - при переходе по ссылке проверяется: -- пароль по этой ссылке еще не высылался -- ссылка действительна - генерируется новый пароль - высылается письмо с новым паролем - сразу автоматически авторизуется
5) Смена пароля - пользователь указывает новый пароль и старый пароль - приходит уведомление (в письме/сообщении не содержится самого пароля)
Опубликован 14.12.2011 в 12:13 по мск
Электронная почта: npogeo@ya.ru
Проект ориентирован на фрилансеров со специализацией: Веб-программирование
Прошло времени с момента публикации: более 13 лет