Это плохая идея для автоматического входа пользователей из электронной почты? - PullRequest
4 голосов
/ 27 августа 2010

Для многих сайтов, которые мы разрабатываем, мы проверяем адрес электронной почты пользователя.Обычно рабочий процесс такой:

  1. Пользователь регистрируется на сайте (электронное письмо для активации отправляется со ссылкой для активации)
  2. Пользователь проверяет адрес электронной почты (нажав вышеупомянутую ссылку)
  3. Пользователь должен войти на сайт, чтобы использовать его (при условии, что он еще не вошел в систему)

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

Я не уверен, имеет ли это значение (отсюда и вопрос!), Но я всегда опасался автоматической регистрациипользователь в этом.Какие дополнительные угрозы безопасности я должен учитывать перед реализацией предложенного решения?

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

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

Ответы [ 6 ]

5 голосов
/ 27 августа 2010

Это зависит от вашего приложения. Вы бы никогда этого не сделали, если бы у вас был веб-сайт банка. Вы можете сделать это, если у вас был такой сайт, как Flickr, Facebook или другие социальные сайты.

Еще одна вещь, которую вы можете рассмотреть, - это предоставление только ограниченного доступа. Я знаю, что Amazon делает это в некоторых частях своего сайта. Пользователь может просматривать сайт, как если бы он вошел в систему, но только до определенной точки. Прежде чем они смогут сделать что-либо, связанное с покупками и заказами, они должны предоставить свой пароль.

Редактировать: Еще одна проблема, которая только что произошла со мной. Убедитесь, что вы можете сделать недействительными URL-адреса. Создайте токены в своей базе данных, которые вы поместили в электронные письма, и затем найдите способ их отозвать. Один из способов сделать это - установить счетчик на все ваши пользовательские записи, а затем скопировать значение этого счетчика в таблицу токенов при создании электронных писем. Если вам когда-нибудь понадобится быстро отозвать большое количество токенов, вы можете просто увеличить счетчик в записи пользователя. После этого вы можете легко увидеть, что счетчик токена не соответствует счетчику пользователей, поэтому вы можете отклонить токен.

4 голосов
/ 27 августа 2010

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

3 голосов
/ 27 августа 2010

Такая система так же безопасна, как и электронная почта пользователя.

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

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

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

1 голос
/ 27 августа 2010

Как минимум,

  • устанавливает жесткий лимит времени на то, как долго активна ссылка (1-2 дня?)
  • , чтобы она работала ровно один раз.Независимо от того, что произойдет после первого использования, при повторном использовании выдается 404.
0 голосов
/ 27 августа 2010

Нет ничего плохого в использовании адреса электронной почты в качестве идентификатора пользователя. Он говорит вам, что человек, который выполняет регистрацию, имеет доступ к этому адресу электронной почты в это конкретное время. Но я думаю, что срок действия ссылки истекает, и если срок действия ссылки истекает, вычеркните этот адрес электронной почты из вашей базы данных (так как это может быть кто-то, кто не использует почту).

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

На ваш взгляд по пункту 2, на мой взгляд, если у вас нет шага 2, вам также не нужно беспокоиться о шагах 1 и 3.

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

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

Если вы не можете сбросить пароль по адресу электронной почты (надежно), вам вообще не стоит заходить в систему. Перейти на сайт без учетной записи.

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

0 голосов
/ 27 августа 2010

Я автоматически войду в систему, если и только если на шаге 1

будет установлен флажок «Запомнить меня на этом компьютере»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...