[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Активация пользователя после регистрации, код подтверждения
jetbird
В общем, надо сделать регистрацию пользователя с последующей активацией через e-mail.

Вопрос у меня о коде подтверждения. Юзеру на указанный емайл посылается письмо со ссылкой. В ссылке - как я понимаю - параметром стоит код подтверждения. Собственно, никогда раньше дела с безопасностью не имел и слабо представляю, как он должен формироваться.

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

Но все это домыслы, и я чего-то в сети ничего туториального найти не могу, а хотелось бы почитать что-нибудь толковое по этому поводу. Как преобразовать, я использую symfony, там есть такой плагин sfGuardUser, и у него есть вот например параметр salt, так может быть, его как-нибудь прикрутить?..



Спустя 37 минут, 39 секунд (9.10.2008 - 12:22) vasa_c написал(а):
md5($email.microTime().mt_rand(1000000, 9999999).uniqid().'зенит - чемпион'...здесь ещё много разной фигни по вкусу...)

Спустя 48 секунд (9.10.2008 - 12:23) twin написал(а):
Самое простое - использовать md5(), salt (соль) используют для повышения криптостойкости, что для кода активации не актуально.

Спустя 32 минуты, 36 секунд (9.10.2008 - 12:56) jetbird написал(а):
а md5 - односторонняя операция? т.е. по кликнутой ссылке этот код перевести обратно в email уже не получится. т.е. полученный код надо хранить где-то в БД, сравнивать пришедший параметр с ним и активировать пользователя.

итого, алгоритм такой:
1. регистрация пользователя, ввод email
2. code = md5(email)
3. отослать письмо пользователю с ссылкой и code
4. записать code в БД (какие-то есть здесь тонкости?)
5. пользователь жмет ссылку и отсылает code обратно
6. смотрим, есть ли в БД такой же код подтверждения, соответствующий неактивированному пользователю
7. если да - активируем пользователя

?

Спустя 11 минут, 57 секунд (9.10.2008 - 13:08) jetbird написал(а):
вот здесь предлагают кодировать пароль и штапм времени: http://www.olate.co.uk/articles/232

Спустя 21 минута, 39 секунд (9.10.2008 - 13:29) twin написал(а):
Информация о пользователе в любом случае должна храниться на сервере. В базе или файлах - кому как нравится. Логин - вещь уникальная, на сайте не может быть два пользователя с одинаковыми логинами. Для этого делается проверка на наличие. Пароль - вещь индивидуальная, пароли могут быть одинаковыми у многих. Хорошим тоном считается условно-однонаправленное шифрование пароля (md5). Условно, потому что существуют способы расшифровки, такие как брутфорс, словарь и т.д. Расшифровать пароль тем сложнее, чем больше его длина. По этому рекомендуется ограничивать минимальную длину. Одностороннее шифрование снимает с владельца сайта ответственность за взлом. Многие пользуются одним паролем на всех сайтах и даже кошельках, по этому хакер, получивший доступ к бд может наделать кучу неприятностей юзеру, за которые Вам придется краснеть. По этой же причине не рекомендуется прописывать пароль в куках. Ни в явном ни в зашифрованном виде.

А что касается кода активации - тут все проще. Если в базе уже есть логин и пароль, то активировать запись можно чем угодно, лишь бы это было уникальным. Можно использовать логин или Е-mail, если он есть. Для большего форсу используют md5, что бы на выходе был длинный красивый код. Никакой секретной информации он не несет, так как получивший его злоумышленник сможет только помочь юзеру активировать запись. Разумеется, такой же код для сравнения, должен быть и на сервере. А для того, что бы сделать автологин, используют куки, в которые и пишут что то уникальное, допустим логин, посолив случайным набором символов, хотя эта процедура тоже больше бутафорская и нужна, если есть опасность, что кто-нибудь подставит куку с логином юзера и зайдет на сайт под его именем.

Вот и весь принцип авторизации.

Спустя 2 часа, 7 минут, 55 секунд (9.10.2008 - 15:37) bvn написал(а):
Хочется дополнить smile.gif
Чтобы куку никто не украл, в момент логина в сессию записывают ip-адресс... Если человек, зашел даже с кукой но с другого ip - то ему все равно предлагается совершить процедуру авторизации... как-то типа так...

Спустя 19 часов, 51 минута, 13 секунд (10.10.2008 - 11:29) Hail написал(а):
Код
mt_srand((double)microtime()*1000000); $salt = "";
        for ($i=0;$i<=7;$i++) { $salt .= chr(rand(97, 122)); }
        $user_code = md5($email.$salt);
        $activation_url = "www.site.ru/register.php?activate=".$user_code;

Вот генерация кода и урл активации

Спустя 1 час, 46 минут, 4 секунды (10.10.2008 - 13:15) twin написал(а):
Позвольте поинтерисоваться, зачем столько букаф? Может я что то важное упускаю...
Вот так не проще, если уж хочется посолить:
Код
$user_code = md5($email.date('U'));
?

Спустя 1 час, 29 минут, 29 секунд (10.10.2008 - 14:44) Krist_ALL написал(а):
очень интересная тема.
насчет криптования:в phpbb кодирут пароль вот так
Код
$password = md5(md5($pas));

ИМХО: можно намного проще сделать
1. Польщователь регица
2. Получаем случайное число
Код
$code = rand(100000,100000000);

3. записываем в бд данные , введенные при регистрации. В базе должна быть колонка 'ACTIVATED' сначало записать в нее $Code
4. Высылаем письмо пользователю www.site.ru/activate?code=$code
5. когда пользователь кликает по ссылке в пиме то активате пхп сравнивает $_GET['code'] с бд, который соответствует емаилу и если код совпал то записываем в коолонку ACTIVATE значение YES

Спустя 32 минуты, 5 секунд (10.10.2008 - 15:16) twin написал(а):
Цитата
$password = md5(md5($pas));

Все эти двойные и тройные хэши попахивают параноей. При правильной валидации и одного хэша за глаза.

Код
$code = rand(100000,100000000);
А вот это подход не совсем верный. Это все-таки псевдослучайность. Как там было про обезьян и Баха... Вероятность совпадения двух кодов хоть и ничтожно мала, но если делать все чисто, то нужна уникальность. Для этого и хэшируется Е-mail. Вот солить зачем его при активации, что то не пойму... Другое дело в куку писать для автологина, там есть смысл. Привязывать к IP не обязательно, если менять код при каждом заходе. ИМХО привязка не есть гут. Особенно сейчас, когда полно коммуникаторов...

Спустя 1 день, 8 часов, 19 минут, 28 секунд (11.10.2008 - 23:36) bret написал(а):
Цитата
При правильной валидации и одного хэша за глаза.

Безруких пользователей с паролями 1234 (последние, будучи однократно хэшировашыми, легко брутятся) надо подстраховывать

Цитата
Вот солить зачем его при активации, что то не пойму...

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

Цитата
Вероятность совпадения двух кодов хоть и ничтожно мала, но если делать все чисто, то нужна уникальность.

Передавать в ссылке активации пару логин+код_активации, пмсм, достаточно уникально

Спустя 9 минут, 24 секунды (11.10.2008 - 23:45) twin написал(а):
Цитата
Безруких пользователей с паролями 1234 (последние, будучи однократно хэшировашыми, легко брутятся) надо подстраховывать
и двойные и тройные брутятся. Ограничивать минимальную длинну надо, тогда есть шанс подстраховать.
Цитата
Смысл активации, как я себе его представляю, заключается в защите от ботов. Соотвественно, и алгоритм нужен такой, чтобы злоумышленник его не разнадал и не научил свой скрипт самостоятельно его генерировать
ну если бот может принимать почту и активироваться по ней, какая ему разница, соленый код или нет. Он же все равно его получит.
Цитата
Передавать в ссылке активации пару логин+код_активации, пмсм, достаточно уникально
просто логин тоже вполне уникально... Или Е-mail... Не вижу разницы.

Спустя 1 год, 4 месяца, 3 дня, 21 час, 50 минут (15.02.2010 - 22:35) SemenH8 написал(а):
Цитата
если бот может принимать почту и активироваться по ней

Я сделал подтверждение регистрации по коду на картинке. Хотел сделать еще активацию по E-mail, но прочитав приведенную цитату засомневался, а стоит ли ее делать...
Подскажите, стоит вводить активацию по E-mail или достаточно подтверждение регистрации по коду на картинке?

Спустя 56 минут, 34 секунды (15.02.2010 - 23:32) DedMorozzz написал(а):
Омг. Ответ на тему через 2 года. Фантастика. А насчёт капчи - дык её тоже можно прочесть ботом. Тока тут уже не переусердствовать с защитой надо. Если пользователю предложат ввести пароль из 18и символов, что бы были и буквы и цыфры в перемешку, поле чего проверить капчей из 12и символов, после его придёт на мыло подтверждение с вводом пароля без возможности "вставить", то юзер росто уйдёт. И всё равно не бывает идеальных систем. Защита нужна в меру. Хотя чёт мне кажеться, что через мыло нажёднее чем капча, хот я и то и то отсеет бОльшую часть "ботов"

Спустя 48 минут, 35 секунд (16.02.2010 - 00:20) SemenH8 написал(а):
В принципе, меня устраивает и капча, но я склонялся в сторону активации через мыло, потому, что кроме защиты от ботов, это еще и некоторое подтверждение личности зарегистрированного пользователя... ну, а потом, подумал, а какая разница, принадлежит мыло пользователю или его соседу, это-то то ничего не меняет... - если конкретный пользователь собирается напакостить то укажет фиктивный адрес и его только удалить нужно, вручную, а нормальный посетитель, укажет реальный адрес. Так что наверное достаточно подтверждения регистрации по коду - так меньше мороки для пользователя...
А вот есть тема, где обсуждаются недостатки защиты по коду на картинке...?

Спустя 16 минут, 35 секунд (16.02.2010 - 00:37) DedMorozzz написал(а):
да, дето была, спроси у поиска. А насчёт мыло vs капча - мыло лучше хотя бы потому, что на капчу забытый пароль не выслать. Да и не тока...

Спустя 6 часов, 36 минут, 43 секунды (16.02.2010 - 07:14) twin написал(а):
По статистике капча отпугивает от регистрации до 70% пользователей. А вот когда человек заполнил форму и все вроде нормально, ему жалко трудов и он, хотя и скрипит зубами, но лезет на почту. Кроме того, если дать неделю на регистрацию, он может сделать это и позже, когда будет читать письма.
Тут главное сделать нормальный почтовый скрипт, иначе может тупо не дойти половина писем.

А для ботов сейчас не помеха ни то ни другое. Студенты за чашку риса вручную по нескольку сотен аккаунтов в день регают.

Спустя 1 год, 4 месяца, 19 дней, 23 часа, 52 минуты, 33 секунды (8.07.2011 - 06:06) Гость_Иван написал(а):
А как можно отключить код активации?

Спустя 6 месяцев, 1 день, 14 часов, 2 минуты (9.01.2012 - 20:08) SemenH8 написал(а):
Цитата (twin @ 16.02.2010 - 04:14)
По статистике капча отпугивает от регистрации до 70% пользователей. А вот когда человек заполнил форму и все вроде нормально, ему жалко трудов и он, хотя и скрипит зубами, но лезет на почту.

Вот это норм. объяснение - убедился в достойном + smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.