Задать вопрос
un1t
@un1t

Какой правильный подход к подтверждению email?

Самый удобный способ кажется, когда пользователю приходит в почту ссылка для активации вида
example.com/activate?key=123
он кликает по ней и в этот момент происходит активация

Но тут есть тонкий момент.
Этот способ нарушает принцип когда GET запросы используются только для чтения.
Проблема тут следующая.
По таким ссылкам могут ходить боты. Если у пользователя почта на yandex или google, то боты читают почту и переходят по ссылкам из писем.
Тем не менее этот способ достаточно часто используется.
Какие есть соображения по этому поводу?
  • Вопрос задан
  • 332 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@nibogd
Обычно либо GET-ссылка, либо вручную вводить ключ из письма в качестве подтверждения. Можно для защиты от ботов по ссылке выводить кнопку "Подтвердить". Тогда GET будет использоваться только для чтения POST-формочки.
Ответ написан
@Apologiz
Разработчик
А почему бы не присылать пользователю не ссылку с подтверждением, а какой нибудь ключ, который он водит на сайте в качестве подтверждения, там ты хоть $_POSTом можешь обрабатывать)
Ответ написан
akubintsev
@akubintsev
Опытный backend разработчик
Этот способ нарушает принцип когда GET запросы используются только для чтения.

Не стоит так заморачиваться в данном случае. Но если хотите, сформируйте в HTML форму с POST запросом по сабмиту.

По таким ссылкам могут ходить боты. Если у пользователя почта на yandex или google, то боты читают почту и переходят по ссылкам из писем.

А валидация почты вовсе не для защиты от ботов. Основная цель - удостовериться, что почта была введена корректно и с ней работать дальше.
Можно конечно попытаться отсеять ботов, но ценой юзабилити: сделать переход на страницу, где будет требоваться ввод капчи для окончательного подтверждения.
Ответ написан
Комментировать
Vityarik
@Vityarik
Можно попробовать для ссылки на подтверждения почты поставить nofollow. И надеяться что поисковики по такой ссылке не пойдут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы